我试图找到电影,如果它还不存在,请将其添加到数据库中。
let film = Films.findOne({ "id" :id }, function(err, doc) {
if (err) throw err;
else console.log("Film is "+doc);
});
if (!film){
film = {"id" : id};
Films.insertOne(film);
}
console.log
给null
,所以没有错误,但它不能在数据库中创建新的电影。你能说出我做错了吗?
请尝试以下代码。问题与异步有关。在调用findOne
语句之前,您需要返回if
。
Films.findOne({ "id" :id }, function(err, doc) {
if (err){
// error
throw err;
} else if (doc) {
// film exists
console.log("Film is "+doc);
} else {
// film doesn't exist
var film = new Films({"id" : id});
film.save();
}
});
该代码将找到一个带有id
=的项目到你的id
变量并调用完成后提供的函数,传入任何错误及其找到的文档(如果没有找到文档,则传入null
)。
然后将打印文档(如果存在),否则它将创建一个新的电影对象并将其保存到数据库中。