2017-04-08 9 views
0

こんにちは私は2つのオブジェクトをマージする問題があります どのように私はこれを行うことができますか?botkitを使用してnodejsの2つのオブジェクトをマージする

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 QUE国連スライドを注ぐCAマルケTRE BIEN 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

設定をに設定してからマージする前に、文字列と同じにしてください。 オブジェクトである必要があります。

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

関連する問題