我有两个集合,比方说cars
和owners
。一个owner
有很多cars
。 one car
仅属于one owner
。当所有者去世时,我需要删除cars
集合中的所有汽车。为了做到这一点,我在js中创建了脚本文件。 aliveOwners
是undefined
,最好的方法是什么?可以使用Mongoose
吗?
MongoClient.connect(url, (err, db) => {
assert.equal(null, err);
console.log('Connected successfully to server');
var aliveOwners = db.collection('owner').find({}); // TODO. it should get only owner ids
console.log(aliveOwners); // undefined, mb cuz of non blocking
db.collection('cars').remove({ ownerId: { $nin: aliveOwners } })); //TODO. delete cars if owner id does not exist in aliveOwners
});
答案 0 :(得分:0)
find 方法是异步的,这就是 aliveOwners 未定义的原因。
您需要传递一个回调函数,该函数接收找到的文档并在那里继续您的代码:
db.collection('owner').find({}, function(err, aliveOwners) {
console.log(aliveOwners);
// Continue code
});
注意:由于汽车只属于一个所有者,因此最好将它们作为子文档包含在所有者文档中。