【发布时间】:2016-08-25 01:40:22
【问题描述】:
我需要在两个集合中插入记录。第二个集合存储第一个集合的记录 ID。这是一个 1:m (first:second) 的情况。触发器是第二个集合:
- 如果需要存储第二个集合的记录
- 检查第一个集合中是否已有拟合记录
- 如果不是:则在第一个集合中保存一个
- 存储第二个集合
- 将第一个集合的记录id保存到第二个集合中
以下示例似乎完成了这些步骤。但我的承诺只有一半。 如何以更好的“承诺”方式做到这一点?
saveObjects(name: String, objects: Array<IObject>){
var promise = FirstModel.findOne({Name : name}).exec();
promise.then(function(res1){
if (!res1){
var la = new FirstModel();
la.Name = name;
la.save(function(err){
if (err) throw err;
})
}
}).error(function(err){
throw err;
})
objects.forEach(function(obj) {
FirstModel.findOne({Name : name},'_id',function(err, res2){
if (err) throw err;
var vo = new SecondModel();
vo.Name = name;
vo.FistID = res2._id;
vo.save(function(err){
if (err) throw err;
});
});
});
}
【问题讨论】: