【问题标题】:Mongoose findOne never returns猫鼬 findOne 永远不会回来
【发布时间】:2018-09-03 19:55:39
【问题描述】:

在使用 findOne、find 或其他任何东西时,我一直遇到 mongo(特别是 mongoose)根本不返回的问题。

我正在使用猫鼬 3.8.12

MongoDB 3.6.3

节点 8.10.0

ubuntu 16.04

digitalocean 上的水滴

我已经修改了 mongoose 示例,使其尽可能简单,而且它只是不会返回期间。

它在我的应用程序上做同样的事情,所以我试着做一个简单的 mongo 测试。

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

const Cat = mongoose.model('Cat', { name: String });

const kitty = new Cat({ name: 'Zildjian' });
kitty.save()

Cat.findOne({}, function(err, kitten) {
    if(err){
        console.log('Error');
        return;
    }
    if(kitten){
        console.log(kitten)
    }else{
        console.log('No Kitten here')
    }
})

我已经使用 Robo3t 测试了 mongo 安装,它可以正常运行。

知道我可以从哪里开始寻找吗?

【问题讨论】:

  • 当您从 mongo shell 或 Robo3t 运行 db.cats.findOne() 时它是否返回任何内容?您是否检查过从此代码与 mongodb 的连接是否成功?
  • 它返回 null 因为保存不起作用。 console.log(mongoose.connection.readyState);返回 2
  • 好的,所以看起来它只是停留在连接状态,但从未真正连接。有什么想法可以看吗?
  • 检查 mongodb 日志,看看你的应用是否真的去那里并建立任何连接
  • 2018-03-25T19:08:58.849+0000 I NETWORK [listener] 连接从 127 接受。0.0.1:51168 #91(现在打开 1 个连接)

标签: node.js mongodb mongoose


【解决方案1】:

是不是你可能会错过像'return'这样的'return'

if(kitten){
   console.log(kitten);
   return kitten;
}else{
   console.log('No Kitten here')
   return;
}

【讨论】:

  • 为什么他们需要在函数结束时显式返回?
猜你喜欢
  • 1970-01-01
  • 2019-02-13
  • 2021-03-04
  • 1970-01-01
  • 2014-05-10
  • 1970-01-01
  • 2019-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多