2016-02-16 133 views
0

我都存储在文档中收集,当我试图通过findOne找回它,它返回我的错误的结果: 我的猫鼬模式是这样的:findOne没有返回正确的结果(蒙戈DB和的NodeJS)

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{... 

它无法找到这条记录,但它的返回可能是第一条记录。 Folloing记录存在于thedb: enter image description here

当我试图加入另一家公司,并利用该findOne检查,如果该名称已经存在,findOne只返回该记录。我的日志网页摘要

enter image description here

而蒙戈外壳程序只返回正确的结果。

enter image description here

在蒙戈外壳,我使用 “” 场周围和价值观,而不是在findOne API。 由于提前

回答

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

希望这可以帮助你。

+0

我可以在晚上测试,然后更新线程**但是**我记得尝试每种可能的组合和结果都是一样的。我会再检查一次。 但即使我以错误的方式将字段放在findOne(** **,value)中,它也不应该返回任何成功的结果。 **在这种情况下,我期待空对象**。 –

+0

准确地说,查询将返回null。你不会以错误的方式投入这个领域。您正在查询的字段(Company.companyName)不存在。 companyName是公司集合中的字段。所以findOne应该返回null与您的查询。 –

+0

但是当前查询没有返回null。查看主要问题中终端窗口的第二个屏幕截图。我正在通过findOne寻找“someCompanyName2”,并且它正在返回“someComapanyName1” –