不要从js对象发送数据

时间:2013-08-16 13:49:38

标签: javascript node.js mongodb socket.io google-chrome-devtools

我有一个问题。

从Chrome控制台发送。工作

var composeData = {viewer_user_id: 37247, subject: '321', message: '32131', dialog_id: null};
Node.socket.emit('composeMessage', composeData);

从某些.js文件发送。不要工作。

    composeMessage: function()
    {
            var dialog_id = ($('#dialog_id').val() == '') ? null : $('#dialog_id').val();
            var to_id = $('#to_id').val();

            if (to_id)
            {
                    var composeData = {viewer_user_id: to_id, subject: $('#subject').val(), message: $('#message').val(), dialog_id: dialog_id};
                    Node.socket.emit('composeMessage', composeData);
            } else
            {
                    $('.messages').notification('empty addressee data', 'error', uniqueid(6));
            }
    }

问题是数据被写入MongoDB,在第一种情况下 - 一切正常,另一种 - 没有任何反应,甚至没有错误。

人们感觉onClick事件会将某些其他看不见的数据添加到对象中。

Node.js app

index.js:

socket.on('composeMessage', function(clientData) {
    console.log(arguments); // OK!
    IM.testInsert(clientData);
});

IM.js:

testInsert: function(clientData) {
    console.log(clientData); // OK!
    mongo_db.collection('test').insert(clientData, function() {
        console.log(arguments); // Not Working if send data from JS file (client), but work if send data from chrome dev-tool
    });
}

关注WebSocket。在第一种情况下(第1行),我通过Chrome开发工具发送数据,在第二种情况下(第3行)通过事件onClick发送数据。如您所见,数据完全相同。

enter image description here

2 个答案:

答案 0 :(得分:2)

我想我可以发布我的建议作为答案,即使实际的错误仍然不清楚。

这似乎是与Mongoskin相关的问题,切换到Mongoose解决了这个问题。

答案 1 :(得分:1)

嗯......我正在考虑两件事:

a)尝试按属性删除属性。这样做你会发现哪一个是有问题的。我对* dialog_id *特别感兴趣

b)将* viewer_user_id:to_id *更改为

viewer_user_id: parseInt(to_id)