0

嗨,伙计们,我在合并两个对象时遇到问题,知道我该怎么做吗?

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 un slide ça marche tré 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 ;

}

4

2 回答 2

0

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

于 2017-04-08T19:33:10.750 回答
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>

这是Object.assign 的文档

于 2017-04-08T19:54:37.260 回答