有人可以帮我这个忙吗,我正在尝试达到这样的目的:
{ "docs": [
{ "_id": "item" },
{ "_id": "item" },
{ "_id": "item" }
] }
所以我首先要创建一个带有关键文档的对象,该对象是我要插入的数组
let query = { docs: [] };
i然后有大约80个键值对项目的列表:
{ _id: item }
我在forEach循环中将其推送到文档中
query.docs.push(item);
所以当我去字符串化
JSON.stringify(query);
它返回对象,但数组为空。
{ "docs": [] }
我不知道为什么会这样。任何人都知道解决此问题的方法以获得预期结果吗?预先感谢
实际代码:
let elasticQuery = {
docs: []
};
axios({
method: "post",
headers: {
"Content-Type": "application/json"
},
url: sent2VecUrl,
data: {
selected_text: query
}
}).then(results => {
results.data.response.forEach(item => {
elasticQuery.docs.push({ _id: item });
});
});
console.log("without: " + elasticQuery + " with stringify :" + JSON.stringify(elasticQuery));
这是服务器的响应:
答案 0 :(得分:3)
在.then函数中移动控制台。这是asyn调用,您的控制台在您的诺言得到解决之前就在打印。
axios({
method: "post",
headers: {
"Content-Type": "application/json"
},
url: sent2VecUrl,
data: {
selected_text: query
}})
.then(results => {
results.data.response.forEach(item => {
elasticQuery.docs.push({ _id: item });
});
console.log("without: " + elasticQuery + " with stringify :" + JSON.stringify(elasticQuery));
});
答案 1 :(得分:0)
您的代码看起来不错。
.then(results => {
results.data.response.forEach(item => {
elasticQuery.docs.push({ _id: item });
});
console.log(elasticQuery);
});
答案 2 :(得分:0)
代替此:
results.data.response.forEach(item => {
elasticQuery.docs.push({ _id: item });
});
执行此操作:
elasticQuery.docs = results.data.response.map(item => ({ _id: item }) )