Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose JS findOne始终返回null_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript Mongoose JS findOne始终返回null

Javascript Mongoose JS findOne始终返回null,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我一直在努力让Mongoose从本地MongoDB实例返回数据;我可以在MongoDB shell中运行相同的命令,并返回结果。我在stackoverflow上找到了一篇文章,其中谈到了我遇到的确切问题;我已经在这篇文章中找到了答案,但我似乎仍然无法让它发挥作用。我创建了一个简单的项目,试图让一些简单的工作,下面是代码 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = new S

我一直在努力让Mongoose从本地MongoDB实例返回数据;我可以在MongoDB shell中运行相同的命令,并返回结果。我在stackoverflow上找到了一篇文章,其中谈到了我遇到的确切问题;我已经在这篇文章中找到了答案,但我似乎仍然无法让它发挥作用。我创建了一个简单的项目,试图让一些简单的工作,下面是代码

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

var userSchema = new Schema({
    userId: Number,
    email: String,
    password: String,
    firstName: String,
    lastName: String,
    addresses: [
        {
            addressTypeId: Number,
            address: String,
            address2: String,
            city: String,
            state: String,
            zipCode: String
        }
    ],
    website: String,
    isEmailConfirmed: { type: Boolean, default: false },
    isActive: { type: Boolean, default: true },
    isLocked: { type: Boolean, default: false },
    roles: [{ roleName: String }],
    claims: [{ claimName: String, claimValue: String }]
});

var db = mongoose.connect('mongodb://127.0.0.1:27017/personalweb');
var userModel = mongoose.model('user', userSchema);

userModel.findOne({ email: 'test@test.com' }, function (error, user) {
    console.log("Error: " + error);
    console.log("User: " + user);
});
下面是2条console.log语句的响应:

错误:null

用户:空

当调用connect方法时,我看到连接到我的Mongo实例,但当发出findOne命令时,似乎什么也没有发生。如果通过MongoDB shell运行相同的命令,则会将用户记录返回给我。我做错什么了吗


提前感谢。

Mongoose将模型的名称多元化,因为它认为“集合”是一个多元化名称的良好实践。这意味着您当前在代码中寻找的是一个名为“users”的集合,而不是您可能期望的“user”

通过在模型定义中指定所需集合的特定名称,可以覆盖此默认行为:

var userModel=mongoose.model('user',userSchema,'user');
第三个参数是要使用的集合名称,而不是根据模型名称确定的集合名称。

好的,我尝试了这个方法,但我的用户变量仍然为null。除了逐行检查代码之外,我还能做些什么来调试出错的地方吗?@CodeMonkey您在“MongoDB shell”中到底在做什么?这里最明显的说法是,如果你不知道的话,那么猫鼬的收藏是多元化的。唯一的另一件事是,你显然没有像你说的那样做“同样的事情”。我通过Mongo shell发出的命令是db.User.findOne({email:'test@test.com'}); 这不是猫鼬发送的同一个命令吗?我让它工作了……我需要大写“user”;在我这样做之后,它返回了结果。谢谢你的帮助@neil这在文档中不清楚。小猫的例子只是分散注意力。