使用botkit在nodejs中合并两个对象

时间:2017-04-08 19:30:19

标签: json node.js object bots botkit

大家好我合并两个对象有问题 任何想法我该怎么做?

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 pour unslideçamarchetrébien     controller.hears('offres','message_received,facebook_postback',function(bot,message){

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 ;

}

2 个答案:

答案 0 :(得分:0)

有一点点错误 要求('下划线')应该不存在..无论如何都与问题无关

答案 1 :(得分: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