Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 推送(对象)插入对象数组_Javascript_Arrays_Mongoose_Mongoose Schema - Fatal编程技术网

Javascript 推送(对象)插入对象数组

Javascript 推送(对象)插入对象数组,javascript,arrays,mongoose,mongoose-schema,Javascript,Arrays,Mongoose,Mongoose Schema,我目前正试图从excel文件中读取同事缺勤的日子,并使用mongoose和express js将其存储在mongodb中 读取数据可以很好地工作,但是更新数据库中的数据总是会产生奇怪的行为,即使用array.push()将对象插入到数组中会导致在外部数组中包含单个对象的对象数组 下面的函数从excel文件中获取原始数据,并尝试将其存储在数据库中。请忽略代码混乱,我只是在原型设计;-) 当打印缺勤天数时会产生如下结果: [ [ { "date": "2018-01-28T23:00:00.00

我目前正试图从excel文件中读取同事缺勤的日子,并使用mongoose和express js将其存储在mongodb中

读取数据可以很好地工作,但是更新数据库中的数据总是会产生奇怪的行为,即使用array.push()将对象插入到数组中会导致在外部数组中包含单个对象的对象数组

下面的函数从excel文件中获取原始数据,并尝试将其存储在数据库中。请忽略代码混乱,我只是在原型设计;-)

当打印
缺勤天数时
会产生如下结果:

[
  [ { "date": "2018-01-28T23:00:00.000Z", "reason": "P" } ],
  [ { "date": "2018-01-29T23:00:00.000Z", "reason": "P" } ],
  ...
  [ { "date": "2018-09-27T22:00:00.000Z", "reason": "P" } ]
]
[
  { "date": "2018-01-28T23:00:00.000Z", "reason": "P" },
  { "date": "2018-01-29T23:00:00.000Z", "reason": "P" },
  ...
  { "date": "2018-09-27T22:00:00.000Z", "reason": "P" }
]
其中
成员。缺席[k]
等于内部数组中的对象。(我已经查过了)。 但是,我不知道对象周围的数组来自何处。我错过了什么?我想要的是这样的:

[
  [ { "date": "2018-01-28T23:00:00.000Z", "reason": "P" } ],
  [ { "date": "2018-01-29T23:00:00.000Z", "reason": "P" } ],
  ...
  [ { "date": "2018-09-27T22:00:00.000Z", "reason": "P" } ]
]
[
  { "date": "2018-01-28T23:00:00.000Z", "reason": "P" },
  { "date": "2018-01-29T23:00:00.000Z", "reason": "P" },
  ...
  { "date": "2018-09-27T22:00:00.000Z", "reason": "P" }
]
更新


正如我建议的那样,我已经测试了member.缺席[k]是否是一个数组,但是在循环中打印它表明它不是
console.log(member.缺席[k])
生成所需的:

{"date":"2018-09-02T22:00:00.000Z","reason":"P"}

看起来,您有一个
成员的数组。缺少[k]
。你可以把它展开,得到一个物体

docs[j].days_of_absence.push(...member.absent[k]);
我想你不知道这个值是否总是一个数组,你可以制作一个数组并传播它

docs[j].days_of_absence.push(...(
    Array.isArray(member.absent[k])
        ? member.absent[k]
        : [member.absent[k]]
));

member.缺席[k]
必须是一个数组。
for(让k=0;k
为什么要跳过第一个条目?(
++k
而不是
k++
)@connexo我不知道
++k
会跳过第一个条目。来自C++的使用增量增量后的增量是一个自然的事情。@ CONEXO,<代码> < /COD>循环不依赖于Primor或Posil在增量部分。开始和条件部分是正确的,所以数组应该从零循环到长度-1。@NinaScholz你能为它添加引用吗?谢谢你纠正我。为了可读性和避免像我这样的错误结论,我仍然建议使用k++而不是++k.
+1
-只要确保
成员。缺席[k]
在所有情况下都确实是一个数组,否则你会得到一个error@Adelin一个对象也可以工作<代码>文档[j].缺勤天数.push({…成员.缺勤[k]})但是,(看看我的编辑)
成员。缺席[k]
不是数组。这就是为什么我不能理解错误来自哪里。@muXXmit2X,这很有趣。不知怎的,你得到了一个额外的数组。