我正在嘗試使用地圖內的 FindOne 進行搜索,但它從未按產品 ID 找到資料。我不明白原因。我在 nodejs 上使用 express。
這是我的代碼:
const calc = (details) => {
let grandSubtotal = 0;
details.map( async detail => {
const {verifyProduct} = await Product.find({ _id: detail._id});
console.log(detail._id);
console.log(verifyProduct); // UNDEFINED
...
uj5u.com熱心網友回復:
應該:
const result = await Promise.all(details.map( async (detail) => { … } ));
當你像你一樣做時,你會得到一個永遠不會被解決的未決承諾物件,我不知道你是否想回傳一些結果,如果沒有,就等待 Promise.all
這也應該是:
const calc = async (details) => { … }
uj5u.com熱心網友回復:
Mongoosefind回傳一個結果串列。findOne回傳一個物件。
該代碼相當于:
const {verifyProduct} = []
用于findOne獲取要解構的物件,并在使用前測驗結果。
details.map( async (detail) => {
const res = await Product.findOne({ _id: detail._id });
if (!res) {
//throw new Error('No id '.detail._id)
console.log('No id', detail._id)
}
const { verifyProduct } = res
console.log(detail._id);
console.log(verifyProduct);
}
另外(正如@antokhio 指出的那樣),如果您想使用回傳的結果陣列,details.map您也需要await這些陣列。
uj5u.com熱心網友回復:
你不需要在這里等待
Product.find(({ _id }) => _id === detail._id );
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/503960.html
標籤:javascript 节点.js 表示
上一篇:過濾掉某些文本后如何合并資料集?
