簡體   English   中英

Mongodb findone方法不起作用

[英]Mongodb findone method does not work

function updateMongo(url, cached) {
    console.log("Update mongo called");
    MongoClient.connect('mongodb://127.0.0.1:27017/dbnerds', function(err, db) {
        if(err) {
            return console.log(err);
        }
        var cache = db.collection('cache');
        cache.insert({url: url, image: null}, {safe: false}, null);
        cache.findOne({ url: url }, function(err, result) {
            console.log(result);
        });
        db.close();
    });
};

從我的代碼中可以看出,我將url插入到mongodb中,但是當我執行findOne操作時,它似乎無效。 控制台沒有打印出任何結果。 這有什么問題?

問題是因為無法保證在執行.findOne()調用時對.insert()的調用已完成。

請嘗試使用以下方法:

function updateMongo(url, cached) {
    console.log("Update mongo called");
    MongoClient.connect('mongodb://127.0.0.1:27017/dbnerds', function(err, db) {
        if(err) {
            return console.log(err);
        }
        var cache = db.collection('cache');
        cache.insert({url: url, image: null}, {safe: false}, function(err, n) {
            // Make the call to findOne until insert has finished
            cache.findOne({ url: url }, function(err, result) {
                console.log(result);
                // close the DB after you are done
                db.close();
            });
        });
    });
};

注意我是如何將對findOne()的調用移動到插入完成后執行的回調函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM