我如何通过纯NodeJS从MongoDB读取数据?

我试图使用标准的MongoClient和纯粹的NodeJS保存和读取MongoDB的一些数据。 问题是我可以数据但不能读取它。 这是我的代码。

var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/test"; var db; MongoClient.connect(url, function (err, database) { if (err !== null) { throw err; } db = database; }); 

阅读function

 function selectDB(tableName, key, value, callback) { var req = {}; req[key] = value; db.collection(tableName).find(req, callback); } 

写function

 function insertDB(tableName, obj) { db.collection(tableName).insertOne(obj, function (err, res) { if (err !== null) { throw err; } else { console.log(res); } }); } 

在使用这个数据插入数据库之后,可以使用Mongo shell来find它。 我成功地在shell中使用bash find()函数,而不是在js代码中。

更新

现在我将callback传递给这里提到的toArray()函数,但是我仍然没有得到结果:callback没有执行。 我的selectDB()函数现在看起来像这样。

 var req = {}; req[key] = value; db.collection(tableName).find(req).toArray(callback); 

更新

这里有一些数据查询的例子: Shell Input:

> db.users.find({"email":"aa@aa"})

输出:

{ "_id" : ObjectId("572ba1a599f59780f549e5e3"), "email" : "aa@aa", "password" : "2GU9I8syq2Oyf6rSqJNDVyFPOTRwPg3nyQjSwPXppvM=" }

JS

查询( reqvariables的键值对):

key = "email" value = "aa@aa"

之后,我得到了我之前描述的结果。

更新

毕竟这里是我的结果处理代码( callback ):

 //select() here is an alias for selectDB() function declared earlyer db.select("users", "email", user.email, function (err, cursor) { if (cursor === undefined || cursor == null || err !== null) { error(); } else if (cursor.password === user.password) { success(); } else { wrong(); } }); 

最后callback被执行。 error()函数始终执行,因为callback中的游标始终未定义。

如果有人知道我做错了什么,如何解决它,请回答。

您使用的是什么版本的node-mongodb-native(驱动程序)? 在最新的一个发现不接受callback作为第二个参数。