Javascript NodeJS和mongo:在回调函数中插入来自数据的许多变化值

Javascript NodeJS和mongo:在回调函数中插入来自数据的许多变化值,javascript,node.js,mongodb,nodes,Javascript,Node.js,Mongodb,Nodes,如果我在mongodb节点中插入了许多项,那么下面的代码是: const extractions = [{ name: 'xpto' }, { name: 'other xpto' }] console.log('extractions before', extractions) dbase.collection('someendpoint').insertMany(extractions, (err, data) => { console.log('extractions afte

如果我在mongodb节点中插入了许多项,那么下面的代码是:

const extractions = [{ name: 'xpto' }, { name: 'other xpto' }]
console.log('extractions before', extractions)

dbase.collection('someendpoint').insertMany(extractions, (err, data) => {
  console.log('extractions after', extractions)
})
奇怪的是inserMany()方法正在更改
提取
常量(将_id添加到每个项),如下所示:

输出:

[{name:'xpto'},{name:'other xpto'}]之前的提取 [{name:'xpto',_id:5b59faf872d33e53c8db4f65}之后的提取,
{name:'other xpto',_id:5b59faf872d33e53c8db4f66}]

我错过什么了吗?这是预期的吗?它如何更改常量的值?
Node是8.11.3版,mongo是mongodb-win32-x86_64-2008plus-ssl-3.6.5-rc0

问题1:-Javascript中CONST关键字的行为

答:const声明创建对值的只读引用。这并不意味着它所持有的值是不可变的,只是变量标识符不能被重新分配。例如,在内容是对象的情况下,这意味着可以更改对象的内容(例如,其参数)

问题2:-insertMany()行为,这是预期的吗

答复:- 如果文档未指定\u id字段,则mongod会添加_id字段并为文档指定唯一的ObjectId。大多数驱动程序创建ObjectId并插入\u id字段,但如果驱动程序或应用程序未创建并填充\u id,则mongod将创建并填充\u id


如果文档包含\u id字段,\u id值在集合中必须是唯一的,以避免重复键错误

数组是静态的,这并不意味着不能更改其属性<推(某物)也可以。是的,这是意料之中的
const
可能不是理想的词语选择,但如果您将其视为对对象的引用(您意识到数组是一个对象,不是吗?),它可能对您更有意义。对
提取的引用
没有更改。数组中的元素没有,但它们不是常量。你甚至可以做
constfoo={bar:1};foo.baz=2-更改对象不会更改对它的
常量
引用。