2016-06-22 9 views
0

Ich habe ein Meteor Spiel enter image description hereMeteor Mongo diesen Wert erhalten

Auf dem Server i einen Timer, die Meteor Methode moveFish nennt.

Meteor.startup(() => { 
    Meteor.setInterval(function(){ 
     Meteor.call("moveFish") 
    }, 40); 
}); 

Diese Methode wählt alle Fische sind am Leben und sie

Meteor.methods({ 
    moveFish: function(id, speed) { 
     Meteor.users.update({ "fish.alive": true }, { $inc: { "fish.positionX": 2 } }) 
    } 
}) 

enter image description here

bewegen machen Wie verschiebe ich Fisch mit this.fish.speed stattdessen Wert 2

Meteor.users.update({ "fish.alive": true }, { $inc: { "fish.positionX": 2 } }) 

* Hinweis t Hut funktioniert nicht

Meteor.users.update({ "fish.alive": true }, { $inc: { "fish.positionX": "fish.speed" } }) 

Das

Meteor.users.find().map(function(user) { x = user.fish.speed Meteor.users.update(user, {$inc: {"fish.positionX": x} }) }) 

Antwort

0

funktioniert ist leider Dokument nicht die Referenz auf sich selbst auf Aktualisierungsvorgang nutzen können.

Sie müssen es zuerst finden und alle Dokumente in diesem Fall manuell iterieren:

Meteor.users.findAll({ "fish.alive": true }).fetch().forEach(function(fish) { 
    fish.positionX += fish.speed; 
    fish.save(); 
}); 
+0

Das total Werke Meteor.users.find() Karte (function (user) { x = Benutzer.. fish.speed Meteor.users.update (Benutzer, {$ inc: {"fish.positionX": x}}) }); – Alexander

+0

Ja, aber die Arbeit mit dem Dokument selbst sieht viel einfacher als "Update" -Funktion. –

+0

Sie haben Recht. Aber ich bin nicht überzeugt von guter Leistung. Also hoffe ich weiter – Alexander

Verwandte Themen