【发布时间】:2017-02-06 17:11:22
【问题描述】:
我实际上是在尝试在我的 mongodb 数据库中保存一条新记录。
company.save(function(err, company){
if (err)
//fail;
//success
})
但是,在此操作之前,我想为我的公司添加标签
我的公司架构
var companySchema = new mongoose.Schema({
name: String,
accro: String,
npa: String,
city: String,
country: String,
isverified : Boolean,
tags: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Tag' // réf. tagSchema
}
]
})
如你所见,标签是一个参考,所以我正在检查标签是否已经存在:
for (var i = 0; i < req.body.tags.length; i++) {
var currentTag = req.body.tags[i];
Tag.findOne({'label': currentTag }, function(err,t){
var tag_id = "";
if(err) res.send(err);
// if exist
if (t) {
console.log("#" + i + " currentTag existe");
t.use++;
t.save();
tag_id = t._id;
} else {
console.log("#" + i + " currentTag not existe");
var tag = new Tag();
tag.label = currentTag;
tag.save();
tag_id = tag._id;
}
company.tags.push(tag_id);
});
}
但由于 mongoose findOne 函数有一个回调,循环只是保持“循环”,当company.save() 被触发时,公司没有添加任何标签..
需要一些帮助才能使其异步 :) 谢谢
【问题讨论】:
标签: node.js asynchronous mongoose