arrays - ObjectId 数组中的 Mongoose indexOf

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

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

最佳答案

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

关于arrays - ObjectId 数组中的 Mongoose indexOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41063587/

相关文章:

node.js - 使用 nodeJS 和 mongoose 将外部 JSON 文件导入到 MongoDB

javascript分组链接节点

node.js - Expressjs : Processing errors from DB operations (next is undefined)

java - 从字符串到 MongoDB ObjectID 的转换

javascript - 让 express.js 显示公用文件夹

node.js - Nodejs 未在服务器中运行

javascript - 为什么当使用 Node Express 和 Backbone 获取请求时,我会得到用户集合和额外的对象?

c++ - 从导入的二维数组计算平均值

arrays - 如何将数组/列表添加到对象

python - Python 中的 FOR 循环中是否有 'skip-range' 技术?