gpt4 book ai didi

node.js - MongoDB 查询可以在 Mongo Shell 中工作,但不能在 Node.js 中工作?

转载 作者:太空宇宙 更新时间:2023-11-03 23:33:48 24 4
gpt4 key购买 nike

我一直在使用 MongoDB 开发 Node.js 服务器。

每当我在 Mongo Shell 中使用此行时:

db.users.findOne({name:"john"},{password:true, _id:false}).password

工作正常as you can see (connor 是预期的答案)

但是,在 Node.js 中,使用适应 Node.js 语法的同一行:

db.collection('users').findOne({name:"john"},{password:true, _id:false}).password

它只是返回未定义

我在本地和远程服务器上尝试了相同的代码,得到了相同的答案。

我认为这可能是数据库连接错误,但 insertOne() 在 Node.js 中工作正常,所以我猜这不会是连接错误。

这是相关的代码:

var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
var ObjectId = require('mongodb').ObjectID;
var connection_string = 'mongodb://127.0.0.1:27017/grumpyworld';
if(process.env.OPENSHIFT_MONGODB_DB_PASSWORD){
connection_string = process.env.OPENSHIFT_MONGODB_DB_URL;
}


console.log("MongoDB connection_string: "+connection_string);

MongoClient.connect(connection_string, function(err, db) {
console.log("Connected to DB");
//This line is commented so I don't insert a file each time I try the code
//db.collection("users").insertOne({"name":"john", "password":"connor"});

var pass = db.collection('users').findOne({name:"john"},{password:true, _id:false}).password;
console.log(pass);


db.close();
});

有什么建议吗?

最佳答案

NodeJS 的 MongoDB 驱动程序使用回调来处理查询结果。调用db.collection('users').findOne({...})不返回结果。相反,它需要一个回调来处理结果:

// Pass a callback as an argument to the query.
db.collection('users')
.findOne({name:"john"}, { fields: { password: true, _id: false } }, function(err, user) {
console.log(user.password);
});

关于node.js - MongoDB 查询可以在 Mongo Shell 中工作,但不能在 Node.js 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35068206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com