2

我有个问题。

从 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 应用程序

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。如您所见,数据是相同的。

在此处输入图像描述

4

2 回答 2

2

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

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

于 2013-08-19T12:38:36.347 回答
1

嗯......我在想两件事:

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

b) 将 *viewer_user_id: to_id* 更改为

viewer_user_id: parseInt(to_id)
于 2013-08-19T10:18:19.837 回答