【问题标题】:Mongoose indexOf in an ObjectId arrayObjectId 数组中的猫鼬 indexOf
【发布时间】:2017-04-25 02:51:42
【问题描述】:

我有以下架构:

var daySchema = new Schema({
date: {
    type: Date,
    required: true
},
activities: [{
    type: Schema.Types.ObjectId,
    ref: 'Activity'
}]
});

我正在删除 daySchema 中的一个活动:

var index = day.activities.indexOf("584aa9c16791eb1ec4ad8e73");
day.activities.splice(index, 1);

有人可以解释一下为什么会这样吗?数组“activities”是一个“ObjectId”数组。因此“indexOf”不应该与对象一起使用,但“indexOf”仍然能够根据 id 找到元素。这让我发疯了,这里还有其他事情吗,也许是 ObjectId 中的地图函数?

【问题讨论】:

    标签: arrays node.js mongodb


    【解决方案1】:

    这是因为 Mongoose 在 MongooseArray 中包装了一个数组,它提供了自己的 indexOf 方法,该方法支持这种基于字符串的比较,而不是原生数组实现使用的严格相等测试。

    【讨论】:

    • 我不知道“MongooseArray”,非常感谢您提供的信息,这似乎是原因!
    • indexOf 链接似乎不再重定向到 indexOf 文档,因此可能很难知道 indexOf 具有特殊语义,不幸的是
    猜你喜欢
    • 1970-01-01
    • 2015-01-27
    • 2020-07-25
    • 2018-11-19
    • 2020-05-25
    • 2017-04-06
    • 2021-06-25
    • 2016-11-21
    • 2016-01-01
    相关资源
    最近更新 更多