Ich habe ein Modell in Mongoose erstellt:schieben JSON-Dokument in Subdokument Einsätzen ObjectId nur
var userWalletSchema = new Schema({
userid: {type: Schema.ObjectId, ref: 'users'},
Transactions: [{
Datum: {Type: Date},
CODE: {Type: String},
aantal: {Type: Number},
soortTransactie: {Type: String},
bedrag: {Type:Number}
}]
},
{collection:'userWallet'});
I fügen Sie das folgende Dokument:
var newRecord = { Datum: '2017-12-21T00:00:00+01:00',
CODE: 'IE00B3VWN518',
aantal: 48,
soortTransactie: 'Aankoop',
bedrag: 478 };
Mit diesem Code:
UserWallet.findOneAndUpdate(
{ userid: mongoose.Types.ObjectId(req.user.id)},
{ $push: {Transactions: newRecord}},
{ upsert: false },
function (err, model) {
console.log(err);
console.log(model);
});
Ich habe mehrere Permutationen und Optionen ausprobiert, aber alle geben das gleiche Ergebnis: Ein Datensatz wird in den Transactions-Array geschoben, aber es enthält immer den Wert _id: ObjectId ('5a490c3376dfb6630464f6e1') (Id ändert natürlich), aber nie das Dokument, das ich einfügen wollte.
Was läuft hier falsch? Ich würde erwarten, dass das Einfügen eines neuen Filialdokuments einfach wäre.
Lösung: Ich habe das Problem gefunden. Ich tippte "Type" mit einem Großbuchstaben T und das Wort sollte in JavaScript alles Kleinbuchstaben sein. So albern, hat mich 2 Tage gebraucht, um es zu entdecken.
lesen Dies ist eine mehr einfache alte Javascript-Ansatz ist das? Nichts falsch daran, ich werde es versuchen und sehen, ob das für mich funktioniert! –
Nicht alt JavaScript, ich denke, es ist ein mehr Mongoose Ansatz. Sie konnten dies nicht mit dem offiziellen MongoDB-Client tun. –
Danke, ich habe es gefunden. Der ursprüngliche Code funktioniert, aber die Schemadefinition enthielt einen Fehler: Geben Sie den Großbuchstaben T. –