Ich arbeite an einem Upvoting/Downvoting-Anwendung mit MongoDB und Node.JS Ich habe verketteten Schemata erstellt zwei Entfernen Element:von verschachtelten Array in Mongoose
var mongoose = require('mongoose');
var Voters = require('./voters');
var PostSchema = new mongoose.Schema({
title: String,
link: String,
upvotes: {type: Number, default: 0},
voters: [Voters.schema],
comments: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Comment' }]
});
mongoose.model('Post', PostSchema);
und für die Wähler:
var mongoose = require('mongoose');
var votersSchema = new mongoose.Schema({
voter_id: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
votetype: Number
});
module.exports = mongoose.model('Voters', votersSchema);
Für Anwender in dem Wähler-Array, verwende ich diesen Code:
var voterModel = new Voters();
voterModel.voter_id = req.payload._id;
voterModel.votetype = 1;
foundPost.voters.push(voterModel);
foundPost.save();
W das funktioniert gut. Zum Entfernen von Benutzern habe ich verschiedene Methoden ausprobiert, aber keine scheint zu funktionieren. Der aktuelle Wert ist $ pull:
Die Update-Aktion funktioniert in der Mongo-Shell, aber nicht von innerhalb des Knotens. Ich habe auch foundPost.voters.remove versucht, aber das Ergebnis war das gleiche. Auch versucht Voters.findOne, aber die Abfrage gibt immer Null zurück.
Jede Hilfe wäre willkommen.
Der Zug von thougth war richtig, danke! Ich musste auch die Variable voter_id im Wählermodell ändern, aber es funktioniert jetzt. – BelaKoplarovics
Sicher, auch eine schnelle Überfliegen auf CRUD-Operationen in Teildokumenten: http://mongoosejs.com/docs/subdocs.html – dNitro