Node.js nodejs mongodb查询导致行为不一致,可能与异步/承诺相关

Node.js nodejs mongodb查询导致行为不一致,可能与异步/承诺相关,node.js,mongodb,async-await,mongodb-query,Node.js,Mongodb,Async Await,Mongodb Query,我对mongo find()有问题。该查询由串行读取(连接的rfid读卡器)触发。为了从本质上解释这个问题,我创建了两个查询:一个是RFID查询,另一个是固定名称查询。如您所见,第一次扫描rfid时,两个查询都会给出一个结果,但第二次只有固定查询会给出一个结果。这似乎与承诺有关……关于为什么会发生这种不同的行为有什么想法吗 // server.js db = require(./db.js); parser.on('data', function (line) { RFID_TAGID = li

我对mongo find()有问题。该查询由串行读取(连接的rfid读卡器)触发。为了从本质上解释这个问题,我创建了两个查询:一个是RFID查询,另一个是固定名称查询。如您所见,第一次扫描rfid时,两个查询都会给出一个结果,但第二次只有固定查询会给出一个结果。这似乎与承诺有关……关于为什么会发生这种不同的行为有什么想法吗

// server.js
db = require(./db.js);
parser.on('data', function (line) {
RFID_TAGID = line.substr(1, 13);
    console.log("=============================================================");
    console.log("                                 S parser data on serial " + COMPORT);
    console.log("=============================================================");
    console.log("==> parse on data RFID_TAGID:" + RFID_TAGID);

 db.findPlayerByRfid(RFID_TAGID)
    .then(function (player) {
        console.log("player: " + player[0].name); // undefined
    })
    .catch((e) => {
        console.log("parser" + parser + "catch" + e);
    });
db.findPlayerByName("joep")
    .then(function (player) {
        console.log("player: " + player[0].name); 
    })
    .catch((e) => {
        console.log("parser" + parser + "catch" + e);
    });
}

// db.js
exports.findPlayerByName = function (name,res) {
    console.log("db findPlayerByRfid monconnected:" + monconnected + " rfidstr:" + name);
    console.log("db connection mongoose: "+mongoose.connection.readyState);
    try {
        const player =  Player.find({ name: name });
        return player;        
    }
    catch (e) { console.log("res:"+res); }
    }

exports.findPlayerByRfid = function (rfidIn,res) {
        console.log("db findPlayerByRfid monconnected:" + monconnected + " rfidstr:" + rfidIn);
    console.log("db connection mongoose: "+mongoose.connection.readyState);
    try {
        const player =  Player.find({ rfid: rfidIn });
        return player;        
    }
    catch (e) { console.log("res:"+res); }
    }

result after first scan of rfid:
=============================================================
                                 S parser data on serial COM3
=============================================================
==> parse on data RFID_TAGID:38003476A2D8
db findPlayerByRfid monconnected:true rfidstr:38003476A2D8
db connection mongoose: 1
db findPlayerByRfid monconnected:true rfidstr:joep
db connection mongoose: 1
player: joep
player: joep

result after second scan
=============================================================
                             S parser data on serial COM3
=============================================================
==> parse on data RFID_TAGID:38003476A2D8
db findPlayerByRfid monconnected:true rfidstr:38003476A2D8
db connection mongoose: 1
db findPlayerByRfid monconnected:true rfidstr:joep
db connection mongoose: 1
parser[object Object]catchTypeError: Cannot read property 'name' of undefined
player: joep