【发布时间】:2016-03-24 00:20:20
【问题描述】:
当用户保存问题时,问题可以包含“标签”数组。我想获取该标签数组并检查它们是否存在于标签集合中。如果标签存在,则更新计数,如果不存在,则将其添加到集合中。我编写了代码来执行此操作,但它似乎非常冗长。有没有更好/更简单/更简洁的方法来用 mongo/mongoose 做到这一点?该功能有点类似于堆栈溢出如何使用它的标记。
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"});
})
}
})
}
});
【问题讨论】:
标签: javascript node.js mongodb express mongoose