【发布时间】:2018-05-31 13:25:20
【问题描述】:
我目前正在开发一个集合管理器,它也管理外键。 它还会生成一些表单,我无法检查外键并正确回调客户端。
我正在使用来自流星的 wrapAsync 方法,以便使用同步版本的方法调用。
首先,我在“check fk”方法中声明对函数的同步调用。
declareCheckFKMethod(index){
Meteor.methods({
[this._collectionList[index]._prefix.replace(/\//g,"")+this._checkFKSuffix]:(fk)=>{
var syncFunc = Meteor.wrapAsync(this.checkFKInDB.bind(this));
return syncFunc(fk,index)
}
})
}
这里是目标函数:
checkFKInDB(fk,collectionIndex,callBack){
try{
var test = this._collectionList[collectionIndex].find({_id:fk}).fetch();
if(test.length==1){
return callBack(null,true);
}
else{
return callBack(null,false);
}
}
catch(e){
return callBack(new Meteor.Error("DB error", e.message),null)
}
}
然后在我的插入函数中检查客户端和服务器端的所有 FK 字段:
const check = Meteor.call(this._collectionList[index]._prefix.replace(/\//g,"")+this._checkFKSuffix,document[element.entryName]);
console.log(check)
这就是我插入有效文档时得到的结果:
服务器端控制台日志:true
客户端控制台日志:未定义
我怀疑客户端根本不等待回调,但服务器等待。 我怎么能解决这个问题? (顺便说一句,我尝试了 await/async 关键字,但它只是给了我错误......)
【问题讨论】:
标签: javascript meteor