簡體   English   中英

無法在異步函數內分配對象屬性

[英]Can't assign object property inside async function

我有一個異步函數,在其中我使用await來返回對象。

async function createProductsArray(products, numberOfDays) {
if (!products) return [];

var productsArray = [];

for (var i = products.length - 1; i >= 0; i--) {
  var product = await productController.read_product(products[i]);

  if (product) {
    product.total_price = productController.calculate_product_price(product, numberOfDays);
    productsArray.push(product);
  }  
}

console.log(productsArray);
return productsArray;
}

函數calculate_product_price:

exports.calculate_product_price = function (product, days) {

  if (days && product.selling_type == 'rental') {
    return product.price * days;
  }
 else {
    return product.price;
 }

}

由於某些原因,我無法將屬性total_price分配給產品。 它不會出現在此函數的返回對象上。 我嘗試用“ test”之類的靜態值替換屬性值,並檢查對象是否可變(是)。

任何想法為什么這不起作用? 我懷疑這與異步函數中發生的所有這些事情有關,但是我真的不知道為什么。

應該停止函數執行,直到等待productController.read_product()返回一個值,所以這應該可以正常工作嗎?

您有2個async功能。 您需要同時等待它們。 我假設您正在執行以下操作:

console.log(myProducts, 7);

...在代碼中的某處,日志顯示為空。 但是您還需要將其包裝在await ,因為createProductsArray也是異步的:

await console.log(myProducts, 7);

原來,我正在嘗試修改來自Mongoose查詢的對象。

但是,Mongoose不會返回普通的Javascript對象,因此無法對其進行修改。 我通過將lean()添加到Mongoose查詢中解決了這一問題。

此問題的更多信息: 為什么不能修改貓鼬查詢返回的數據(例如:findById)

當嘗試在自定義 function

[英]React throws an error “Can't assign to property” scrollLeft “on 1: not an object” When trying use ref in custom function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM