В настоящее время я работаю над менеджером коллекции, который также управляет внешними ключами.Он также генерирует некоторые формы, и у меня возникают проблемы с проверкой внешних ключей и получением правильных обратных вызовов для клиента.
Я использую метод wrapAsync от meteor для использования синхронной версии вызова метода.
Сначала я объявляю синхронный вызов функции методом "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)
}
}
Затем в моей функции вставки Iпроверьте все поля FK как на стороне клиента, так и на стороне сервера:
const check = Meteor.call(this._collectionList[index]._prefix.replace(/\//g,"")+this._checkFKSuffix,document[element.entryName]);
console.log(check)
И вот что я получаю, когда вставляю действительный документ:
Журнал консоли на стороне сервера: true
Журнал консоли на стороне клиента: undefined
Я подозреваю, что клиентская сторона просто не ждет обратного вызова, а сервер делает.Как я мог это исправить?(Кстати, я пытался использовать ключевые слова await / async, но это просто дает мне ошибки ...)