travaille sur les notifications push en utilisant mongodb et nodejs. Je peux voir les nouvelles notifications ajoutées (qui sont addede dans MongoDB) dans mon navigateur Mais, si je mis à jour le dossier, la valeur est mise à jour dans le navigateurobtenir la dernière mise à jour mongo id de nodejs
// if no error get reference to colelction named: 'notifications'
db.collection('notifications', function(err, collection){
if(err) {
throw err;
}
// if no error apply a find() and get reference to doc
collection.find().sort({
$natural: -1
}).limit(1).nextObject(function(err, doc) {
// Rewind the cursor, resetting it to point to the start of the query
if(err) {
throw err;
}
// using tailable cursor get reference to our very first doc
var query = {
_id: {
$gt: doc._id
}
};
var options = {
tailable: true,
awaitdata: true,
numberOfRetries: -1
};
var cursor = collection.find(query, options).sort({
$natural: 1
});
// This function will take cursor to next doc from current as soon as 'notifications' database is updated
function next() {
cursor.nextObject(function(err, message) {
if (err) throw err;
console.log(message.message);
mdsok.volatile.emit('notification', message);
next();
});
}
// what you need to do is: call it first time
next();
});
C'est ce que je fais dans mon code.
que dois-je faire pour mettre à jour la valeur dans le navigateur lorsque je mets à jour la même chose en db.
S'il vous plaît aidez-moi. Merci d'avance!
Il s'agit d'une implémentation de curseur disponible sur ce qui doit être une collection plafonnée. Vous ne devriez vraiment pas mettre à jour sur une collection plafonnée. Pour un, puisqu'il est "plafonné" le document peut ne pas exister. Pour deux, "grandir" un document de collection plafonné n'est pas autorisé. Ils sont destinés à agir comme une "file d'attente", donc "insérer seulement". –
Mon besoin actuel est, j'affiche certaines valeurs dans le navigateur qui sont récupérées à partir de la base de données Mongodb. Si cette valeur a changé dans db, alors sans actualiser ma page, j'ai besoin d'afficher la valeur mise à jour sur le navigateur en utilisant les sockets. Quelqu'un peut-il me donner un bon exemple pour ce genre d'exigence. – GGGGG
@NeilLunn, ce que vous avez dit est absolument juste! Nous ne pouvons pas mettre à jour la collection plafonnée. Laissez sur la collection plafonnée. Maintenant, je n'utilise pas la collection plafonnée. J'utilise une collection normale et j'ai inséré quelques valeurs dans la collection. Maintenant, je dois déclencher l'objet mis à jour chaque fois que je mets à jour l'objet dans la base de données. – GGGGG