Mongoose已连接但无法找到数据

时间:2017-04-20 16:08:22

标签: javascript node.js mongodb express mongoose

我遇到了问题,可以使用一些帮助。 我们有一个使用MySQL的应用程序,我们正在切换到MongoDB。 我们将Node.js与Express一起使用,并将MongoDB和Mongoose用于数据库

我们查看了MongoDB和Mongoose文档,并在Stack Overflow上搜索了相关问题,但我们似乎遗漏了一些东西。

这就是app.js中的内容:

var mongo = require('mongodb');
var mongoose = require('mongoose');
var db = mongoose.connect('mongodb://localhost:27017/DBName');

这是我们的usersModel.js

var db          = require('mongoose');
var Schema      = db.Schema;

var userSchema  = new Schema({
    u_id :                      Number,
    u_name :                    { type: String, required: true },
    u_lastname :                String
});

module.exports  = db.model('user', userSchema);

这就是我们在userController中使用的内容:

var User        = require('../models/usersModel');

User.find({}, function(err, users) {
    if (err) throw err;

    console.log("Found users: ", users);
});

console.log(db.connection.readyState);说是连接。 并且User.find()似乎没有给出错误,而是给出一个空数组/未定义。

如果有人能告诉我们我们忽略了什么,我们将非常感激。

提前致谢。

3 个答案:

答案 0 :(得分:1)

你的find()电话对我来说很好。

您确定收藏中有用户吗?创建新用户是否会抛出您没有注意到的错误?也许你可以通过弹出一个终端并写下来验证你的收藏中确实有用户:

> mongo
> use DBName
> show collections
> db.user.find()

这将返回所有存在的用户。

答案 1 :(得分:1)

在:iuliu.net:我们得到的错误是第一个是[]而第二个是未定义的。

在JohnnyHK:感谢您的提交,但我们确信用户集合在此数据库中,并且我们搜索的属性存在。

在Juuso:感谢您的反馈,但在mongo终端,我们收到了收集输出。

  

如果我们和僧人一起尝试这个问题,有人会问我们一个关键问题。我们   安装了和尚,我们找到了数据库,收集并得到了   结果回来了。我们还不确定Mongoose的问题是什么,   但是和僧人一起工作。

谢谢你们的反馈和时间。

答案 2 :(得分:1)

不确定为什么有人认为这是个好主意,但这是猫鼬的工作:

  

默认情况下,猫鼬通过将模型名称传递给utils.toCollectionName方法来生成集合名称。此方法将名称复数。

作为奖励,当表名具有驼峰大写约定时,它会使用小写字母。

您可以通过在方案中设置以下选项来解决此问题:

var userSchema = new Schema({..}, { collection: 'user' });

有关此here的更多信息。