2017-04-08 1 views
0

안녕하세요 두 객체를 병합하는 데 문제가 있습니다. 어떻게하면이 작업을 수행 할 수 있습니까?botkit을 사용하여 nodejs에서 두 객체를 병합

controller.hears('offres','message_received, facebook_postback',function(bot,message){ 

connection.connect("mongodb://localhost/bot",function(err,db){ 
    var z =""; 
    var data = db.collection('offres').find().toArray().then(function(data){ 
     for (var i =0 ; i<10; i++){ 
      var _under = require("underscore"); 
      var titre = data[i]['titre']; 
      var ref = data[i]['ref'].toString(); 
      var description = data[i]['description']; 

      b = setpayload(titre,description, ref,'https://cdn.pixabay.com/photo/2017/01/13/17/29/hiring-1977803_960_720.jpg'); 
       z= _under.extend(z, b); 
      } 
     bot.reply(message,{ 
      attachment:{ 
      'type': 'template', 
      'payload': { 
       'template_type': 'generic', 
       'elements':[z ] 
      }} 
     }) 



    }) 
}); 


function setpayload(titre,sub, ref, image) 
{ 
var m = { 
      'title': titre, 
      'image_url': image, 
      'subtitle': sub, 
      'buttons': [ 

       { 
        'type': 'postback', 
        'title': 'postuler', 
        'payload': ref 
       }, 
       { 
        'type': 'postback', 
        'title': 'plus de détail', 
           'payload': ref 
       } 
      ] 
     } 

return m ; 

}

notant 케 유엔 슬라이드 부어 CA 마르 레 비엔 controller.hears ('offres', 'message_received, facebook_postback'기능 (로봇, 메시지) {

connection.connect("mongodb://localhost/bot",function(err,db){ 

    var data = db.collection('offres').find().toArray().then(function(data){ 

     var _under = require("underscore"); 
     var titre = data[0]['titre']; 
     var ref = data[0]['ref'].toString(); 
     var description = data[0]['description']; 

     b = setpayload(titre,description, ref,'https://cdn.pixabay.com/photo/2017/01/13/17/29/hiring-1977803_960_720.jpg'); 


     bot.reply(message,{ 
      attachment:{ 
      'type': 'template', 
      'payload': { 
       'template_type': 'generic', 
       'elements':[b] 
      }} 
     }) 



    }) 
}); 


function setpayload(titre,sub, ref, image) 
{ 
var m = { 
      'title': titre, 
      'image_url': image, 
      'subtitle': sub, 
      'buttons': [ 

       { 
        'type': 'postback', 
        'title': 'postuler', 
        'payload': ref 
       }, 
       { 
        'type': 'postback', 
        'title': 'plus de détail', 
           'payload': ref 
       } 
      ] 
     } 

return m ; 

}

답변

0

작은 실수가 있습니다. 필요 ('밑줄')는 없어야합니다. 문제는 어쨌든 관련이 없습니다.

0

z 문자열을 시도하고 병합하기 전의 문자열과 같습니다. 개체 여야합니다. 또한

var z = {}; 

, 왜 당신은 당신의 객체를 병합하려면이 옵션을 사용하지 마십시오

z = Object.assign(z, b); 

예 :

$(function(){ 
 
    var z = {"foo": "bar"}; 
 
    
 
    var b = {"newData": "blah"}; 
 
    
 
    z = Object.assign(z, b); 
 
    
 
    console.log(z); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

여기 docs for Object.assign

입니다
+0

나는 둘 다 시도하고 그것은 작동하지 않습니다 .. 내가 그것을 기록 할 때 마지막 요소 만 인쇄합니다 – shaghabo

+0

시도한 코드로 업데이트 할 수 있습니까? – matt

관련 문제