У меня проблемы с wrapAsync + метод + сеансы.wrapAsync + метод + сеанс
Как правильно реализовать WrapAsync? Я хочу в шаблоне узнать, есть ли у пользователя хотя бы один элемент, созданный им. И затем определите, может ли он создать другой элемент.
Теперь я получаю эту ошибку:
W20141013-15:04:43.237(-3)? (STDERR) Error: Can't wait without a fiber
Но я не мог найти волокно в документации. И для реализации этого, действительно ли это необходимо? На стороне клиента я хочу что-то вроде:
//pagina.js
Template.pagina.helpers{
userHasItem: return Session.get('userHasItem');
}
//pagina.js
Meteor.call('userHasItem', Meteor.userId(), function (error,result) {
Session.set('userHasItem', result);
});
// на стороне сервера:
if(Meteor.isServer){
Meteor.startup(function() {
var userHasItemAsync = function (userId) {
setTimeout(function() {
if (Items.findOne({'userId': userId})) {
return true;
} else {
return false;
}
}, 4000);
};
Meteor.methods({
userHasItem: function(userId) {
var userHasItemSync = Meteor.wrapAsync(userHasItemAsync),
result;
try {
userHasItemSync(userId);
console.log(result);
return result;
}catch (e) {
console.log('erreur', e.message);
throw new Meteor.Error(500, e);
}
},
}
});
}
@cleliodpaula Извините, не могли бы вы пояснить, что вы имеете в виду? – mark
Это была моя первая попытка, для очевидных условий. Я уже реализовал это решение. для того, чтобы это работало правильно, мне нужно обновить страницу. Позвольте мне объяснить поток: Когда пользователь создает элемент, заполнив форму, после отправки пользователь перенаправляется на страницу «Список элементов», если он не создал какой-либо элемент, представлен вариант «создать элемент». В противном случае ничего не появляется. Ответ querie медленнее, чем рендеринг страницы, это я хочу решить с помощью сеанса, вызовов и асинхронных методов. – cleliodpaula
@cleliodpaula Я не знаю особенностей вашего сценария, но то, что вы описываете, похоже на проблему с публикацией. Если вы не обновляете страницу, вы все еще видите, что элемент отображается, хотя и в более позднее время? Если нет, данные не попадают в клиенту. Если это не так, вы все равно можете решить проблему с заглушками клиентских методов, которые являются мгновенными. – mark