Wenn ein Benutzer eine Frage speichert, kann die Frage ein Array von "Tags" enthalten. Ich möchte dieses Array von Tags verwenden und prüfen, ob sie in der Tag-Sammlung vorhanden sind. Wenn die Tags vorhanden sind, aktualisieren Sie die Anzahl, falls nicht, fügen Sie sie der Auflistung hinzu. Ich habe Code geschrieben, um dies zu tun, aber es scheint sehr ausführlich. Gibt es einen besseren/leichteren/prägnanteren Weg, dies mit Mongo/Mungo zu machen? Die Funktionsweise ähnelt der Funktionsweise des Stack-Überlaufs beim Tagging.MongoDB Mongoose speichern oder aktualisieren mit Array
apiRouter.post('/', function(req, res) {
var question = new Questions();
question.text = req.body.text;
question.answers = req.body.answers;
question.tech = req.body.tech;
question.tags = req.body.tags;
question.level = req.body.level;
question.createdAt = req.body.createdAt;
question.save(function(err, questions) {
if(err) res.send(err);
res.json({message: "Question was created."});
});
for each(tag in req.body.tags) {
QuestionTags.find({ 'tag': { $regex: new RegExp(tag, "i") } }, function(err, tags) {
if(err) res.send(err);
if(tags.length === 0) {
var tagObj = new QuestionTags();
tagObj = {
tag: tag,
count: 0
}
tagObj.save(function(err, questions) {
if(err) res.send(err);
res.json({message: "Tag created"});
});
} else {
var tagObj = new QuestionTags();
tagObj = tags;
tagObj.count++;
tagObj.save(function(err, questions) {
if(err) res.send(err);
res.json({message: "Tag updated"});
})
}
})
}
});
Das funktioniert nicht ganz ... Alles in 'QuestionTags.find' wird nicht mehr angewendet, da es nicht mehr in forEach ist. Wenn 'tagsRegExp' 6 Tags enthält und 5 davon in der Sammlung vorhanden sind, erhalten Sie diese 5 Tags in der Abfrageantwort zurück. Das hilft nicht beim Erstellen eines neuen Tags für etwas, das nicht existiert. – erichardson30
@ erichardson30 Ich habe den Code und die Erklärung mit Mungo 'QueryStream' auf dem' Query' Objekt, das von 'find()' zurückgegeben wurde, aktualisiert. – roflmyeggo
das speichert nichts in der FrageTags-Sammlung – erichardson30