如何避免在对象内部创建对象并使用猫鼬将元素直接推送到快速数组中?
Posted
技术标签:
【中文标题】如何避免在对象内部创建对象并使用猫鼬将元素直接推送到快速数组中?【英文标题】:How to avoid creating object inside object and push the elements directly into an array in express using mongoose? 【发布时间】:2020-12-26 11:59:38 【问题描述】:filesArray
是对象数组,表示包含所有文件上传数据,如路径、文件名等。所以我只是获取路径和文件名并将其推送到另一个名为 Bigpaths2
的数组中。因此,当我将 Bigpaths2
推送到 Addtasks
数组的数组 Bigpaths4clients
时,它会成功推送,但是通过在 Bigpaths4clients
内创建另一个数组,然后以对象的形式推送。
但我不希望那样。我想阻止创建该数组。我只想将Bigpaths2
中的所有路径对象直接推入Bigpaths4clients
数组中,创建单个对象。我最后还附上了一张图片来得出我不想要的结论。检查json格式也谢谢!
var Bigpaths2 = [], paths;
filesArray.forEach(element =>
paths =
"path": element.path,
"name": element.filename
;
Bigpaths2.push(paths);
)
User.findOneAndUpdate(
'Addtasks.commonID':cid ,
$push: 'Addtasks.$.Bigpaths4Clients': Bigpaths2 ,
function (error, WriterData)
if (error)
console.log(error);
else
console.log("success");
)
用户架构:
[
"assignee" : "Charlotte Miles",
"displayLock" : "none",
"displayDelete" : "inline",
"commonID" : "x0yosfn1uz",
"status" : "Approved by Admin",
"Date" : "Fri Sep 04 2020 15:36:11 GMT+0530 (India Standard Time)",
"exampleRadios" : "option1",
"otherdetails" : "haha great!",
"website" : "asad.com",
"keywords" : "article importance, article generation, article quality",
"words" : 12345,
"topic" : "How article is generated?",
"_id" : ObjectId("5f5211b29dc68d04244a6774"),
"Bigpaths4Clients" : [
[
"name" : "api-ms-win-core-errorhandling-l1-1-0.dll",
"path" : "public\\files\\api-ms-win-core-errorhandling-l1-1-0.dll"
]
],
"Bigpaths" : [
"path" : "public\\files\\api-ms-win-core-errorhandling-l1-1-0.dll",
"name" : "api-ms-win-core-errorhandling-l1-1-0.dll"
]
]
【问题讨论】:
【参考方案1】:User.findOneAndUpdate(
'Addtasks.commonID':cid ,
$push: 'Addtasks.$.Bigpaths4Clients': $each: Bigpaths2 ,
function (error, WriterData)
if (error)
console.log(error);
else
console.log("success");
)
$each operator is used to append multiple values to the array field
。
在您的情况下,MongoDB 考虑了整个Bigpaths2 array as a single element to append to Bigpaths4Clients array
这是官方停靠链接https://docs.mongodb.com/manual/reference/operator/update/push/#append-multiple-values-to-an-array
【讨论】:
以上是关于如何避免在对象内部创建对象并使用猫鼬将元素直接推送到快速数组中?的主要内容,如果未能解决你的问题,请参考以下文章