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搜索。。。符合要求…我想通过服务进行测试“”应检索按名称存储的内容。。。。我期待像今天一样。。。