Passer des données de noeud en jade?

Le problème est que je rends une vue et envoie des données

console.log(products); // shows an array res.render('seller/sell',{'shop_id':req.user.shop_id ,'products':products}); 

et je sauve les données comme ça en jade

 input(id='shop_id',type='hidden',name='shop_id',value='#{shop_id}') input(id='pd',type='hidden',name='pd',value='#{products}') if(products !='') each val , key in products a(href!='home/sell/edit?id=#{val.id} ',class='product') img(class='product_thum',src!='#{ val.product_thum}',alt!='#{ val.product_name}',title!='#{ val.product_name}') p.product_name #{ val.product_name} 

et puis j’essaie d’obtenir les produits

 var d = $('#pd').val(); console.log(typeof d); //shows ssortingng 

Je sais que les produits doivent être un tableau sinon

  if(products !='') each val , key in products a(href!='home/sell/edit?id=#{val.id} ',class='product') img(class='product_thum',src!='#{ val.product_thum}',alt!='#{ val.product_name}',title!='#{ val.product_name}') p.product_name #{ val.product_name} 

Cela ne fonctionnera pas, mais pourquoi ai-je reçu une chaîne lorsque j’ai besoin du tableau?

Qu’ai-je fait de mal?

Vous ne pouvez pas “stocker” un tableau dans un champ de saisie masqué, mais vous pouvez stocker une liste des ID de produit, comme ceci:

 var productIds = products.map(function(product){return product.id}).toSsortingng(); res.render('seller/sell', {'shop_id':req.user.shop_id ,'products':products, productIds: productIds}); 

Ensuite, dans votre vue jade:

 input(id='shop_id',type='hidden',name='shop_id',value='#{shop_id}') input(id='pd',type='hidden',name='pd',value='#{productIds}') if(products !='') each val , key in products a(href!='home/sell/edit?id=#{val.id} ',class='product') img(class='product_thum',src!='#{ val.product_thum}',alt!='#{ val.product_name}',title!='#{ val.product_name}') p.product_name #{ val.product_name} 

La valeur de pd sera désormais une liste d’id de produit séparés par des virgules

Pas particulièrement élégant, mais cela résout le problème.

Meilleure façon d’afficher une chaîne séparée par des virgules Exemple data = abc, pqr, lmn;

 below code in js file test = data.toSsortingng().split('","); res.render("show.jade",{list: test}); display the code in jade as table tbody each item in list tr td #{item}