繁体   English   中英

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

[英]How can I read data from MongoDB via pure NodeJS?

我正在尝试使用标准的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 selectDB(tableName, key, value, callback) {
    var req = {};
    req[key] = value;
    db.collection(tableName).find(req, callback);
}

写功能

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

在使用this将数据插入db后,可以使用Mongo shell找到它。 我在shell中成功使用bash find()函数,但在js代码中没有。

更新

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

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

更新

这是一些数据查询示例: Shell输入:

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

输出:

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

JS

查询( req变量的键值对):

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();
        }
    });

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM