gpt4 book ai didi

node.js - 即使 ID 有效,Mongoose findById 也会返回 null

转载 作者:太空宇宙 更新时间:2023-11-04 03:03:25 27 4
gpt4 key购买 nike

我已经看到了有关以下具有类似标题的问题的讨论 mongoose 'findById' returns null with valid id但我的问题不是数据库名称,因为我与同一数据库的所有其他连接实际上对同一集合的查询都工作正常。我正在使用 mongoose 4.13.6、node js 6.11 和 mongo 3.4。这是一个帖子请求。

var query=req.body;

我将搜索参数发送为

var findFruit = 
{
_id:query._id
}

当我打印 findFruit 时,我得到:

_id:'5a1cf77920701c1f0aafb85e'

此 Controller 的功能是:

Fruit.findById(findFruit._id,function(err,fruit){
if( _.isNull(err) ){
var response = genRes.generateResponse(true,"found successfully");
callback(response);
}
else{
var response = genRes.generateResponse(false,"there occured some error : "+err);
callback(response);
}
})

我什至尝试过寻找

Fruit.find(findFruit,function(err,fruit){
if( _.isNull(err) ){
var response = genRes.generateResponse(true,"found successfully");
callback(response);
}
else{
var response = genRes.generateResponse(false,"there occured some error : "+err);
callback(response);
}
})

集合中肯定有此 id 下的条目。

我也经历了这个 git 问题 https://github.com/Automattic/mongoose/issues/3079不幸的是,我无法降级 Mongoose ,因为它可能会影响多个其他工作功能。编辑 :我尝试创建 ObjectId,如下所示:

var mongoose = require('mongoose');
var ObjectID = require('mongodb').ObjectID;
var objectId = new ObjectID();
// Convert the object id to a hex string
var originalHex = objectId.toHexString();
// Create a new ObjectID using the createFromHexString function
var newObjectId = new ObjectID.createFromHexString(query._id);

模型文件:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;

var FruitSchema = new Schema({
name : {type : String, unique : true},
color : {type : String}
});

module.exports = mongoose.model('Fruit', FruitSchema);

最佳答案

我所有的 findById("id") 调用都返回 null。

当使用 Compass 查看集合时,我意识到所有 _id 元素都是字符串。请注意,整个集合均已导入。

我在 Compass 中创建了一个新元素,并且 _id 被创建为 ObjectId!当我使用该元素的 id 调用 findById("id") 时,它起作用了!

我的结论是导入显然存在错误。我还没有找到将字符串 _id 字段转换为实际集合中的 ObjectId 的方法。

关于node.js - 即使 ID 有效,Mongoose findById 也会返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47827392/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com