2012-02-07 2 views
0

Pour une raison quelconque, la poussée de MongoDB fonctionne avec cette configurationmangouste pression ne marche pas travailler à l'intérieur socket.io appel

// 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); 

    }); 
}); 

Mais placer la déclaration de poussée mangouste dans le doesnt appel socket.io travail

Comme donc:

// 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}); 

    }); 
}); 

Juste à titre de référence: 'slog' fait référence à l'événement sur lequel je veux que mongoose se mette à jour. Im recevoir des données du client et je veux pousser les données d'événement de socket à mongodb chaque fois que cet événement est émis (c'est pourquoi je veux le placer dans l'appel socket.io)

+0

Comment vérifiez-vous si 'story.lines.push' a fonctionné? Beaucoup de code manque ici. –

+0

Je viens de coller une section du code pour le garder concis. J'ai tout le code pour le schéma ci-dessus. J'ai testé le story.push en dehors de l'appel socket.io et les données sont stockées avec succès dans MongoDB - Est-ce que cela répond à votre question? –

+0

Vous avez probablement des problèmes de concurrence, mais il est impossible de le savoir sans voir le code complet. Essayez d'exécuter votre code, puis vérifiez la base de données via la console mongo. Appelles-tu '.save()' sur 'story'? –

Répondre

1

Où est votre fonction de sauvegarde en cours d'exécution ? Je vous recommande de mettre toute votre logique pour ce que vous voulez faire quand vous recevez un message de slog dans son rappel, puis appelez save sur l'instance de l'histoire dans votre callback.

+0

Cest à peu près ce que j'ai essayé de faire, mais je ne pense pas im implémentation correctement. Voici le code complet sur GitHub: https://github.com/eemouk/Storify/blob/master/story.js –

+0

Il n'y a pas de rappel pour pousser. c'est une opération intégrée pour les tableaux. Faites juste la sauvegarde après avoir fait le push, pas dans un rappel (il n'existe pas). –

+0

J'ai déjà essayé ça. Le problème est, le code itère jusqu'à la sauvegarde sans attendre que les données soient reçues à partir de l'événement Socket on. Le résultat de ceci est qu'il ne capture aucune donnée du client. Comment puis-je contourner ce problème? –