FindOne mongo返回null

问题描述 投票:0回答:1

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

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.lognull,所以没有错误,但它不能在数据库中创建新的电影。你能说出我做错了吗?

node.js mongodb
1个回答
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)。

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

© www.soinside.com 2019 - 2024. All rights reserved.