【发布时间】:2021-12-13 18:56:48
【问题描述】:
我正在尝试创建一个添加到购物车按钮,该按钮使用我选择的特定产品的 ID 从产品数据库中获取数据。我正在尝试将使用相同 ID 找到的对象推送到普通的 javascript 数组中,然后使用 ejs 方法显示它。在我尝试的时候,我发现我无法以对象形式推送数据。
总结:
在第 7 行,我声明了一个数组,我想在该数组中存储一些我从 db 模型中获取的对象。 在第 15 行,我试图将对象表单推送到我的数组中,以便我可以遍历对象以使用 ejs 在我的页面上显示它们。但我做不到。
截图:
- 这是我在尝试将对象推送到数组后得到的最终结果:
- 这是我要推送的对象:
代码:
app.get("/cart", (req, res) => {
if (req.isAuthenticated()) {
const findcartdata = req.user.username;
userData.findOne({email: findcartdata}, (err, BookId) => {
// console.log(BookId.cartItemId);
const idArray = BookId.cartItemId;
var bookArray = [];
idArray.forEach((data) => {
productData.findOne({_id: data}, (err, foundBookData) =>{
// console.log(foundBookData);
if(err){
console.log(err);
}
else{
bookArray.push(foundBookData);
}
})
});
console.log(bookArray);
// res.render("cart", {
// cartBookArray: BookId.cartItemId
// })
});
} else {
res.redirect("/login");
}
})
在上面的代码中,我使用护照身份验证用户方法找到了用户的电子邮件,并使用该电子邮件我想将产品添加到不同的 javascript 数组中(我要传递给我的购物车 ejs 文件,然后在列表中迭代它) 使用我从另一个名为 userData 的模型中获得的 ID 数组。问题是我能够找到每个 Id 的 userData 但无法将它们存储为对象数组。
【问题讨论】:
-
你不是在等待你的第二个承诺/回调。 `console.log(bookArray);`这应该只在你得到第二个数组的结果后运行。,使用异步等待或promiseAll
-
嘿 Sojin,我尝试使用 async-await 但它不起作用。这是我得到的错误: nhandledPromiseRejectionWarning: MongooseError: Query is already executed: productData.findOne({ _id: new ObjectId("6177e7b5aaa6cae0d4c... at model.Query._wrappedThunk [as _findOne] (D:\Mohit\Web\INT 220 - 最终项目\BookStore\node_modules\mongoose\lib\helpers\query\wrapThunk.js:21:19)
标签: javascript node.js arrays object ejs