gpt4 book ai didi

javascript - 将元素从一个对象添加/合并到数组中的另一个对象

转载 作者:可可西里 更新时间:2023-11-01 10:08:58 25 4
gpt4 key购买 nike

我的异步函数中有以下代码

async function test () {
try {
const aucs = await auctions.find({owner: 'owner', place: 'place'}).limit(15);
const item = await Promise.all(aucs.map(async aucs => {
const map = await items.find({id: aucs.item});
return map[0]
}));
--->we are here [1]
} catch (err) {
console.log(err);
}
}

test();

和点 [1] 我有两个可用的数组,其中包含另一个对象(都是来自 Mongo 的响应),它们是:

aucs = [ { _id: 5c00faa4936359120ceb3632,
auc: 177215422,
item: 130251,
price: 26000000,
lastModified: 1543567955000,
date: 2018-11-30T08:53:56.290Z,
__v: 0 },
{ _id: 5c00faa4936359120ceb363f,
auc: 177215440,
item: 130251,
price: 26000000,
lastModified: 1543567955000,
date: 2018-11-30T08:53:56.290Z,
__v: 0 },... ]

item = [ { _id: 5bcd8a6134cdd1223cd3239b,
id: 130251,
name: 'TEST_NAME_1',
__v: 0 },
{ _id: 5bcd8a6134cdd1223cd3239b,
id: 130252,
name: 'TEST_NAME_2',
__v: 0 },...]

我想添加到 aucs[i]aucs 中的每个元素,item[i].name (name: 'TEST_NAME_1')喜欢:

combined = [ { _id: 5c00faa4936359120ceb3632,
auc: 177215422,
item: 130251,
name: 'TEST_NAME_1',
price: 26000000,
lastModified: 1543567955000,
date: 2018-11-30T08:53:56.290Z,
__v: 0 },...]

我正在尝试将 for 循环与 auc[i].name = item[i].name 或使用 aucs.push() 但由于某些未知原因,它对我不起作用。我收到 .push is not a function 错误并且 for loop 没有添加任何内容。那么也许有人有任何想法?

Note: 1

实际上解决了项目的一个问题,mongo 返回数组内的数组,如 [ [ { ...} ] ] 所以我应该使用 return map[0] 来修复它。

Note: 2

aucs 和 item 都是根据 typeof 的对象,并且有 .length 选项(它们都是相同的长度,应该一直都是。所以它们不是 promises

Note: 3

let merged = {...aucs, ...item}; 返回我

{ '0': { _id: 5bcd8a6134cdd1223cd3239b,
id: 130251,
name: 'JewelCraft',
icon: 'inv_jewelcrafting_70_jeweltoy',
stackable: 1,
isAuctionable: true,
__v: 0 }...

但不是我需要的

最佳答案

如果你在这里使用一些聚合技巧会更好更快

auctions.aggregate([
{ "$match": { "owner": "owner", "place": "place" }},
{ "$lookup": {
"from": "items",
"let": { "item": "$item" },
"pipeline": [
{ "$match": { "$expr": { "$eq": ["$id", "$$item"] }}}
],
"as": "item"
}},
{ "$limit": 15 }
])

关于javascript - 将元素从一个对象添加/合并到数组中的另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53572737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com