Javascript 推送(对象)插入对象数组
我目前正试图从excel文件中读取同事缺勤的日子,并使用mongoose和express js将其存储在mongodb中 读取数据可以很好地工作,但是更新数据库中的数据总是会产生奇怪的行为,即使用array.push()将对象插入到数组中会导致在外部数组中包含单个对象的对象数组 下面的函数从excel文件中获取原始数据,并尝试将其存储在数据库中。请忽略代码混乱,我只是在原型设计;-) 当打印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
缺勤天数时
会产生如下结果:
[
[ { "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,这很有趣。不知怎的,你得到了一个额外的数组。