Javascript Mongoose JS findOne始终返回null
我一直在努力让Mongoose从本地MongoDB实例返回数据;我可以在MongoDB shell中运行相同的命令,并返回结果。我在stackoverflow上找到了一篇文章,其中谈到了我遇到的确切问题;我已经在这篇文章中找到了答案,但我似乎仍然无法让它发挥作用。我创建了一个简单的项目,试图让一些简单的工作,下面是代码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
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这在文档中不清楚。小猫的例子只是分散注意力。