Mongoose查找查询结果总是一个null对象

时间:2014-11-27 00:37:35

标签: node.js mongoose passport.js

我正在拼命尝试在我的应用中使用mongoose查找“查找”查询来解决我的问题。

我开始非常了解中间件,我在其他应用程序上使用它并且运行良好,但是在一个新项目上出现了问题并且它只在我的数据库中找到空对象...

//server/app.js
var db = require('./lib/database');
var User = require('./models/user'); 

//server/lib/database.js
var mongoose = require('mongoose');
var db = function () {
     mongoose.connect('mongodb://localhost/pipeline');
     var connection = mongoose.connection;
     connection.on('error', console.error.bind(console, 'connection error'));
     connection.once('open', function callback() { 
         console.log('connected');                 //result : connected
     });
};
module.exports = db();

//server/models/user.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({ username: String, password: String });
module.exports = mongoose.model('User', userSchema);

Mongoose连接良好,控制台没有错误。所以当连接mongoose时 我使用这种方法(我在我的LocalStrategy for PassportJS中正好使用它):

User.findOne({username: "Paul"}, function (err, user){
    console.log(user);                                // result : null
});

它始终为null(查询期间没有错误),我还测试了find({})来检查所有条目,但结果是一个空数组[]

这是我的管道数据库的User集合(与Robomongo一起检查):

/* 0 */
{
    "_id" : ObjectId("547649df8d99c22fa995b050"),
    "username" : "Paul",
    "password" : "test"
}

/* 1 */
{
    "_id" : ObjectId("54765efdcd3b13c80c2d03e2"),
    "username" : "Micka",
    "password" : "lol"
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

要让'User'模型使用User集合,您需要明确地将该集合名称作为mongoose.model的第三个参数提供,否则Mongoose将使用复数,低层型号名称为users

module.exports = mongoose.model('User', userSchema, 'User');