/ / Mongoose findOneAndUpdate aktualizovať ako ObjectId - node.js, mongodb, mongoose

Mongoose findOneAndUpdate update ako ObjectId - node.js, mongodb, mongoose

Mám nasledujúce schéma:

let PlayerSchema = new mongoose.Schema( {
name: String,
country: String,
roundResults: [ {
round: Number,
result: String,
points: Number
} ]
} );

Keď používam findOneAndUpdate aktualizovať dokument:

Player.findOneAndUpdate({ id: req.params.id },
{$push: {"roundResults": result }},
{safe: true, upsert: true, new : true},
(err, player) => {
if( ! err && player ) {
res.json( player );
} else {
res.json( err );
}
}
);

Mám nasledujúce neočakávaný výsledok:

[
{
"_id": "57c9eb55c2a07a401462e3ec",
"name": "Joe Bloggs",
"country": "England",
"__v": 0,
"roundResults": [
{
"_id": "57c9eba11c597d5e1460e4f0"
}
]
}
]

Nemám roundResults schému, ale dostanem _id ako je uvedené vyššie, očakávam, že uvidím:

"roundResults": [
"round": 1,
"result": "1",
"points": 3
]

Môže niekto vysvetliť, prečo je to tak, alebo ako sa mi to podarilo, aby som vnoril údaje, ktoré zobrazujem priamo nad?

odpovede:

1 pre odpoveď č. 1

Dokonca aj keď odovzdáte doslovný objekt pre čiastkové dokumenty, je to Schema, a id by sa vytvorili. Ak je to pole, definujte jeho typ Array.

Upozorňujeme, že ak definujete nejakú schému pre danú vlastnosť, považuje sa za subkód a entitu, takže má id