• 1400/12/22

[object Promise] در nodejs :

سلام استاد وقت بخیر 

استاد تابعی ایجاد کردم تا ایدی که از صفحه میاد رو درونش یه سری کارهارو انجام بدم و جوابش رو return کنم به صفحه

اینکار رو انجام میدم ولی چون تابع از نوع async تعریف شده وقتی به صفحه ارسال میشه پرامیس در حال pending هست و وقتی از then و... توی صفحه استفاده میکنم مقادیر رو نشون نمیده و خالی نشون میده

در صورتی که وقتی console.log میگیرم مقادیر رو نشون میده

درواقع  وقتی لاگ میگیرم نشون میده 

اما توی صفحه چاپ نمیکنه مقادیر رو

میشه در این مرود راهنماییم کنید 

<td><span>
<% orderProductName(order._id).then(res=>{ %>

<% res.map(item=>{ %> 
      <%= item.title %> 
      <% console.log(item.title) %> 
<% }) %> 

<% }) %> 
</span></td>
//کدهای صفحه 
  const orders = await Order.find({user:req.user}).sort({createdAt:"desc"})
 
    let arr=[]
    const orderProductName = async(id)=>{
      for(let order of orders){
          for(let o of order.products){
            arr.push(o.id)
          }
      }
      const products = await Product.find({_id:arr})
      return products
    }

 

  • 1400/12/23
  • ساعت 21:15

سلام دوست من

اینکار باید در بک اند انجام بشه و داده به فرانت ارسال بشه نه خود پرامیس 

دلیلش این هست که موتور های قالب تنها داده ایی که الان در دستشون هست رو نشون میدن و وقتی ما از then استفاده میکنیم یعنی داره قرار به دستمون برسه و نشون داده بشه که موتورهای قالب نمیتونن منتظر بمونن پس خالی نشون میدن.

پس کدت رو طوری بنویس که مستقیم داده بفرستی جهت نمایش 


  • 1401/01/02
  • ساعت 01:19

استاد وقتی کلا تابع رو async تعریف میکنم [object Promise] نمایش داده میشه توی صفحه 

در صورتی که من فقط داده رو  حاضر اماده دارم return میکنم

 try {
    const orders = await Order.find({user:req.user}).sort({createdAt:"desc"})
 
    const orderProductsName = async(id)=>{
      const order = await Order.findOne({_id:id})
    //  return order
      return "salam"
    }

   return res.render("page/userAccount/orders",{
     orders,
     getTime,
     formatDate,
     orderProductsName: await orderProductsName,
   })
  } catch (err) {
    return page500(req,res)
  }

تا تابع orderProductsName رو از نوع async میکنم اونطوری میشه


logo-enamadlogo-samandehi