を更新し、私は少しのアプリを作ったが、私は、例えば、サーバ側流星/ MongoDBを見つけて、私はちょうど流星を学んでいる
上find()
とupdate()
コレクションに問題があります。
if (Meteor.isServer) {
function getCollection1(){
return collection_1.find({}).fetch({});
}
....
Meteor.methods({
start: function(id) {
datas = getCollection1();
Collection2.update({_id:id}, {$set: {datas: datas}}); //sometimes it's ok(3/4)
}
...
}
をまたは私が待っているときにエラーが発生しました
if (Meteor.isServer) {
async function getCollection1(){
return await collection_1.find({}).fetch({});
}
....
Meteor.methods({
start: function(id) {
getCollection1().then(function(datas){
Rooms.update({_id: id}, {$set: {datas: datas}},function(err){
console.log(err);//error: Meteor code must always run within a fiber
});
});
}
...
}
どうしましたか?あなたが提供されたコードに基づいてFiber()
if (Meteor.isServer) {
Fiber = Npm.require('fibers')
function getCollection1(){
return collection1.find({}).fetch({});
}
function setCollection2(id){
Fiber(function() {
datas = getCollection1();
collection2.update({_id: id}, {$set: {datas: datas}},function(err){
console.log(err);
});
}).run();
}
....
Meteor.methods({
start: function(id) {
setCollection2(id);
}
...
}
本当にわからないが、これは役立つかもしれない:HTTP ://stackoverflow.com/questions/10192938/meteor-code-must-always-run-within-a-fiber-when-calling-collection-insert-on-s –
あなたはあなたがfind/updateを同期モードでコールバックを渡さないでください。 – MasterAM
ファイバーには別の方法がありますか? – Dioux