2012-02-07 54 views
0

出於某種原因,推到MongoDB的工作與此設置貓鼬推不工作socket.io調用

// Fixed params 
story.title = 'Socketi'; 
story.lines.push ({ author: 'Khuram', text:'socket data'}); 


//Capture data from socket into schema 
io.sockets.on('connection', function (socket) { 
socket.emit('news', { hello: 'world' }); 

socket.on('slog', function (data) { 

console.log(data); 

    }); 
}); 

但將貓鼬推聲明socket.io呼叫犯規內工作

像所以:

// Fixed params 
story.title = 'Socketi'; 



    //Capture data from socket into schema 
io.sockets.on('connection', function (socket) { 
socket.emit('news', { hello: 'world' }); 

socket.on('slog', function (data) { 

story.lines.push ({ author: 'Khuram', text:data.my}); 

    }); 
}); 

僅供參考用途:「猛擊」指的是,我想貓鼬更新的事件。 Im從客戶端接收數據,我希望每次發生此事件時都將套接字事件數據推送到mongodb(這就是爲什麼我要將其置於socket.io調用中的原因)

+0

你如何檢查'story.lines.push'是否工作? Lot的代碼在這裏丟失。 – 2012-02-08 05:33:01

+0

我剛剛粘貼了一段代碼以保持簡潔。我確實擁有它上面的模式的所有代碼。我已經測試了socket.io調用之外的story.push,並且數據被成功存儲到了MongoDB中 - 這是否回答了您的問題? – 2012-02-08 09:31:46

+0

您可能在併發性方面遇到麻煩,但是如果沒有看到完整的代碼就不可能分辨出來。嘗試運行你的代碼,然後通過mongo控制檯檢查數據庫。你是否在'story'上調用'.save()'? – 2012-02-08 16:19:56

回答

1

您的保存功能正在執行?我建議把你所有的邏輯放在你想要發生的事情上,當你在回調中收到一條短信時,然後在你的回調中調用保存故事實例。

+0

這幾乎是我一直在試圖做的,但我不認爲即時通訊實施正確。以下是GitHub上的完整代碼: https://github.com/eemouk/Storify/blob/master/story.js – 2012-02-08 16:30:59

+0

沒有推送回調。它是一個數組的內置操作。只需在完成推送後進行保存,而不是在回叫中(不存在)。 – 2012-02-08 18:00:55

+0

我以前試過。問題是,代碼將直接進行迭代以保存,而無需等待從Socket on事件接收到數據。這樣做的結果是它不捕獲客戶端的任何數據。我如何解決這個問題? – 2012-02-08 20:41:55