FindOne mongo返回null

时间:2017-12-22 21:22:41

标签: node.js mongodb

我尝试找到电影,如果它还不存在,请将其添加到数据库中。

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,因此没有错误,但无法在数据库中创建新电影。你能说出我做错了吗

1 个答案:

答案 0 :(得分:0)

尝试以下代码。问题与异步有关。在调用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文件被发现)。

然后将打印文档(如果存在),否则它将创建一个新的电影对象并将其保存到数据库中。