findOne没有返回正确的结果(Mongo DB和nodejs)

时间:2016-02-16 17:10:31

标签: node.js mongodb mongoose mongoose-schema

我已将文档存储在集合中,当我尝试通过findOne检索它时,它返回错误的结果: 我的Mongoose模型就像:

var db = require('../db');
var mongoose = db.mongoose_var;
var companySchema = mongoose.Schema({
companyName:String
});

module.exports = mongoose.model('Company',companySchema);

然后我在我的server.js中使用:

var CompanySchema = require('./schemas/companySchema');

当我试图找到已插入的记录时如下:

CompanySchema.findOne({'Company.companyName':jsonObj.companyName},function(err,companyName){
 console.log('companyName foudn:'+companyName);
 if(companyName !== null){
    res.status(404).json({status:'Name already in the DB'});
    return;
    }else{...

它无法找到这条记录,但它的回归可能是第一张唱片。 折叠记录存在于db中: enter image description here

当我尝试添加另一家公司并使用此findOne检查此名称是否已存在时,findOne仅返回此记录。我的日志片段

enter image description here

而mongo shell只返回正确的结果。

enter image description here

在mongo shell中,我正在使用" "围绕字段和值,而不是在findOne Api中。 在此先感谢

1 个答案:

答案 0 :(得分:0)

您应该使用以下内容:

CompanySchema.findOne({'companyName':jsonObj.companyName},function(err,companyDocument){
if(err) console.log(err);
console.log('company found:' + companyDocument);
if(companyDocument){
res.status(404).json({status:'Name already in the DB'});
return;
}else{...

您的代码中的错误是您使用 Company.companyName 而不是companyName。 companyName是公司集合中字段的名称。

希望这会对你有所帮助。