【问题标题】:mongoose findOne data does not exit not working猫鼬 findOne 数据不退出不工作
【发布时间】:2017-08-21 11:17:48
【问题描述】:

user_id 2 在 mongodb 中不存在,但控制台日志不打印“不存在”

var query = PostData.findOne({ 'user_id': '2'});

query.exec(function (err, doc) {
  if(doc) {
    console.log('ok');
  } else {
    console.log('does not exist');
  }
});

没有猫鼬它可以工作:

connection.db.collection("PostData", function(err, collection){
   collection.find({ 'user_id': '2'}).toArray(function(err, data){
      console.log(data); // it will print your collection data
   })
});

打印[]

【问题讨论】:

  • err 怎么样?设置好了吗?你用的是哪个版本的猫鼬?
  • 版本 4.11.7 * err = 处理错误
  • 您可以记录错误吗? if (err) { console.log(err); return; }; if(doc) { console.log('ok'); } else { console.log('does not exist'); }
  • 没有错误,重新编码不函数退出函数;因为我把 var query = PostData.findOne({ 'user_id': '2'}); query.exec(function (err, doc) { console.log('test') if(doc) { console.log('ok'); } else { console.log('不存在'); } }) ;测试也不打印
  • 那一定是别的东西,你确定你有一个开放的mongo连接吗?尝试阅读此答案stackoverflow.com/questions/21894050/…

标签: node.js mongodb mongoose


【解决方案1】:

无论对象是否存在,MongoDB 都会返回一个数组。如果对象存在,则它们的数组将被填充,否则它只是一个空数组。因此,如果要检查用户是否存在,则必须检查 doc.length ,如果为 0 则表示用户不存在。

【讨论】:

  • 您能告诉我您是如何更改代码的吗?请在此处发布
  • 最后我用 count 方法解决了这个问题 PostData.findOne({ 'user_id': '1', "created_at": { $gte: today}}).count
  • @Nimesha 如果您只需要确认用户存在,您的方法更好。但是如果您还需要返回找到的用户,那么这将不起作用。
猜你喜欢
  • 1970-01-01
  • 2019-09-10
  • 1970-01-01
  • 2016-09-18
  • 1970-01-01
  • 2019-02-13
  • 1970-01-01
  • 2018-07-22
  • 2015-06-16
相关资源
最近更新 更多