1

我在集合中存储了一个文档,当我尝试通过 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{...

它无法找到该记录,但它返回的可能是第一条记录。thedb中存在以下记录: 在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

在 mongo shell 中,我在字段和值周围使用“”,而不是在 findOne Api 中。提前致谢

4

1 回答 1

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 是 Company 集合中字段的名称。

希望这可以帮助你。

于 2016-02-16T17:22:41.197 回答