繁体   English   中英

MongoDB查询可在Mongo Shell中使用,但不能在Node.js中使用?

[英]MongoDB query working in Mongo Shell but not in Node.js?

我一直在使用MongoDB在Node.js服务器上工作。

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

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

如您所见,它工作正常( connor是预期的答案)

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

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

它只是返回undefined

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

我以为这可能是数据库的连接错误,但是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);
  });

暂无
暂无

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

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