ObjectId 数组中的猫鼬 indexOf

Fra*_*raK 4 arrays mongodb node.js

我有以下架构:

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

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

var index = day.activities.indexOf("584aa9c16791eb1ec4ad8e73");
day.activities.splice(index, 1);
Run Code Online (Sandbox Code Playgroud)

有人可以解释我为什么这样做吗?数组“活动”是一个“ObjectId”数组。所以“indexOf”不应该与对象一起工作,但“indexOf”仍然能够根据id找到元素。这让我发疯了,这里还有其他事情吗,也许是 ObjectId 中的 map 函数?

Joh*_*yHK 7

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