在ObjectId数组

时间:2016-12-09 15:21:14

标签: arrays node.js mongodb

我有以下架构:

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);

有人可以解释一下为什么会这样吗?阵列"活动"是" ObjectId"的数组。所以" indexOf"不应该使用对象,但仍然是" indexOf"能够根据id找到元素。这让我发疯了,这里还有其他事情,也许是ObjectId里面的地图函数?

1 个答案:

答案 0 :(得分:3)

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