Mongodb Mongoose按数据字段从模式查找到服务
如果在我的猫鼬中有这样的模式Mongodb Mongoose按数据字段从模式查找到服务,mongodb,mean-stack,Mongodb,Mean Stack,如果在我的猫鼬中有这样的模式 “严格使用”; var mongoose=require('mongoose'), Schema=mongoose.Schema; var lovSchema=newmongoose.Schema({ 名称:{type:String}, 值:[{type:String}] }); module.exports=mongoose.model('lovs',lovSchema); 通常,在mongoose中,我们可以从集合中找到带有reff to\u id的文档 函数
“严格使用”;
var mongoose=require('mongoose'),
Schema=mongoose.Schema;
var lovSchema=newmongoose.Schema({
名称:{type:String},
值:[{type:String}]
});
module.exports=mongoose.model('lovs',lovSchema);
通常,在mongoose中,我们可以从集合中找到带有reff to\u id
的文档
函数getOneById(id){
var deferred=Q.deferred();
model.findOne({u id:id})
.exec(函数(错误,项){
如果(错误){
控制台日志(err);
延迟。拒绝(错误);
}
其他的
控制台日志(项目);
延期。解决(项目);
});
回报。承诺;
}//gentOneById方法结束
但是我想按名称查找文档,它是我架构中的一个数据字段。我尝试用
名称修改\u id
,但以此错误结束
{
“消息”:“路径\”“id\”处的值\”区域\“转换为ObjectId失败,
“姓名”:“卡斯特罗”,
“类型”:“ObjectId”,
“值”:“区域”,
“路径”:“\u id”
}
只需使用名称和字符串值:
function getOneByName(name){
var deferred = Q.defer();
model.findOne({ name: name})
.exec(function (err, item) {
if(err) {
console.log(err);
deferred.reject(err);
}
else
console.log(item);
deferred.resolve(item);
});
return deferred.promise;
} // gentOneById method ends
您可以这样进行测试:
model.findOne({ name: "Bob"})
然后查看是否仍然出现错误…您使用的是哪种版本的Mongoose?我在使用Mongoose3.8版时也遇到了某种错误,导致了这个错误。但我在Mongoose的Github Repo上读到,它在版本4.x中得到了解决。这里有许多不同的方法来查询Mongoose模式,还有很多在线可用的资源。例如:我使用“猫鼬”:“3.8.1”。。。。在服务中,我将按名称字段而不是id搜索。。。符合要求…我想通过服务进行测试“”应检索按名称存储的内容。。。。我期待像今天一样。。。