私はvpulim:node-soapを使って石鹸サーバーを稼働させています。流星群サーバの非同期関数
マイ流星サーバーの起動は、様々な他のコードの中で、これを含んでいます。私は何をしようとしている
authRequestOperation: function(args,cb,headers,req) {
console.log(args);
var authResponceObject = {};
var futureAuthResponse = new Future();
Fiber(function(){
if(collectorUsers.findOne({username: args.username})){
console.log("Found User");
authResponceObject = {
username: args.username,
nonce: Random.id()
};
console.log("authResponceObject is: " + JSON.stringify(authResponceObject,null,4));
console.log("futureAuthResponse returning...");
futureAuthResponse.return(authResponceObject);
}
// console.log("futureAuthResponse waiting...");
// return futureAuthResponse.wait();
}).run();
console.log("authResponceObject after fiber is: " + JSON.stringify(authResponceObject,null,4));
return authResponceObject;
},
は次のとおりです。
- 私は、クライアントからユーザーオブジェクトを受け取ります。
- Iユーザーが存在する場合、ユーザはMongoDBの
- に存在しているかどうかを確認、応答オブジェクト
- は応答オブジェクトを使用してクライアントに応答する準備。
私は1.働いています。しかし、それは非同期呼び出しであるため、2,3,4の順序が乱れてしまいます。今何が起こっているか
は次のとおりです。
- チェックモンゴ
- は、レスポンスオブジェクトを準備します(空である)クライアントオブジェクト
- リターン応答オブジェクト
- を受けます。
私は上記にMeteor.methodsを使用していません。 この作業を適切な方法で行うにはどうすればよいですか?私はwrapAsync
とfiber/future
の周りをジャグリングしようとしましたが、行き止まりになりました。
? '.findOne'はすでに同期しています。 'Fiber'を使わないとエラーが出ますか? – Khang
Meteor.methods以外でコードを実行しているので、ファイバーでラップする必要があります。そうでなければ、流星がファイバーで走る必要があるというエラーが出ます。 – blueren