当前位置: 首页 > 知识库问答 >
问题:

Mongoose findOne方法检索丢失_id的有效文档

太叔凌龙
2023-03-14

我目前在一个非常奇怪的猫鼬错误,我不知道是什么导致了这个问题。当我调用findOne方法时,我得到一个有效的实例,只有\u id字段未初始化。当我试图保存文档中的更改时,它会崩溃

{ [CastError: Cast to ObjectId failed for value "[object Object]" at path "_id"]
 message: 'Cast to ObjectId failed for value "[object Object]" at path "_id"',
 name: 'CastError',
 type: 'ObjectId',
 value: 
   { from_node_id: 52e10f6acce9daa7f3bf3162,
     target_id: 'a' },
 path: '_id' }

我有一个简单的模式定义:

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

var transitionProbabilitySchema;
transitionProbabilitySchema = new Schema({
   _id: {
       from_node_id: {type: Schema.Types.ObjectId, ref: "Zone"}
   },
   value: {
       total_transition_count: Number,
       probabilities: [
           {to_node_id: {type: Schema.Types.ObjectId, ref: "Zone"}},
           {probability: Number}
       ]}
}, {collection: 'transitionProbability'});

module.exports = mongoose.model('transitionProbability', transitionProbabilitySchema);

当我打电话给你

TransitionProbability.findOne({"_id.from_node_id": from_node_id},
        function (err, tp) {
            if (err) {
                handleError('error - tp not found', err, callback);
            } else {
                 // some modification of tp and then save
            }
        }

Mongoose返回文档,但只有\u id未初始化。当我试图保存修改过的文档时,整个函数崩溃,而不是在此之前。我还将该文档记录到控制台,以验证是否缺少了“\u id”字段。

注意,from_node_id是从另一个查询中提取的,是一个有效的ObjectId

有什么想法吗?提前感谢您的帮助!

编辑:手动设置_id字段似乎也不起作用。更有趣的是:在尝试其他方法时,我发现findOneAndUpdate确实冻结了整个节点。js应用程序,没有任何日志。它只是不继续。

共有1个答案

颜光临
2023-03-14

编辑:供您参考:在连续搜索了两天没有找到答案后,我为Mongoose.jsGithub的一个可能的错误创建了一张票,他们确认了我的问题。根据他们的说法,它被固定在新的4.0.0发布版本中,不建议用于生产性使用。实际上解决了我的问题,但是rc1制造了更多的问题。

到目前为止,我的解决方案是:

最后,这个错误让我非常恼火,我更改了该表的整个累计值,这样\u id就没有一个单独的from\u node\u id字段。我现在直接使用from_node_id作为id。

 类似资料:
  • 问题内容: 从ElasticSearch获取某个索引的所有_id的最快方法是什么?使用简单的查询是否可能?我的索引之一包含大约20,000个文档。 问题答案: 编辑:请也阅读@Aleck Landgraf的答案 您只想要elasticsearch-internal 字段吗?还是文档中的字段? 对于前者,请尝试 Note 2017更新: 该帖子最初包含在内,但此后名称已更改,并且是新值。 结果将仅包

  • 问题内容: 我有一组层次结构的数据,我想从Firebase检索信息。以下是我的数据的外观: 但是,我的问题是这样的:在查看数据的结构时,当我想抓取或时,必须执行以下代码: 现在,这遍历了每个参加者的孩子,并逐个获取名称和对象ID。函数完成后,我将每个值存储到字典中。这样做后,该函数将被多次调用,并且可能会非常慢,尤其是在多次访问数据库或从数据库访问数据库时。有没有更有效的方法可以做到这一点?我试图

  • 我有下面的类层次结构。当我为子类生成javadoc时,生成的文档不包含从超类继承的方法的java文档注释。 我正在为子类生成文档。超类中方法的文档为空。

  • 最近我接受了一次采访,他们问我一个“搜索”问题。问题是: 假设存在一个(正)整数数组,其中每个元素与其相邻元素相比要么是,要么是。 例: 现在搜索并返回其位置。 我给出了这样的答案: 将这些值存储在临时数组中,对它们进行排序,然后应用二进制搜索。 如果找到元素,则返回其在临时数组中的位置 (如果数字出现两次,则返回第一次出现的数字) 但是,他们似乎对这个答案不满意。 正确的答案是什么?

  • 本文向大家介绍R检查丢失的数据,包括了R检查丢失的数据的使用技巧和注意事项,需要的朋友参考一下 示例 anyNA报告是否存在任何缺失值;而按is.na元素报告缺失值: ìs.na返回在算术运算(FALSE = 0,TRUE = 1)下被强制为整数值的逻辑向量。我们可以使用它来找出有多少个缺失值: 扩展这种方法,我们可以在数据帧上使用colSums和is.na来计算每列的NA: naniar软件包(

  • 本文向大家介绍jquery mobile页面跳转后样式丢失js失效的解决方法,包括了jquery mobile页面跳转后样式丢失js失效的解决方法的使用技巧和注意事项,需要的朋友参考一下 用ajax跳转的时候,从a.html跳转到b.html后,b.html的css以及js都失效了。 方法: 将当前页面b.html需要用到的css以及js放在<page>div内。 原理: 由于jqm的ajax跳转