我正在尝试在 Template.admin.events 代码中查找一个文档。我有一个表单和 onClick 我想验证输入的 ObjectID 的 ID 是否是我的集合中的现有文档,并获取该结果以将其显示在模板上。
我在客户端的事件代码:
Template.admin.events({
'click #btnAjouterObjet'(event) {
let objetIdInput = $('#object_id').val().toString();
Meteor.subscribe('objetsFindOne', objetIdInput, {
onReady: function () {
let obj = Objets.findOne();
if (obj) {
console.log("found");
console.log(obj);
objetsArr.push(objetIdInput);
}
else {
console.log("not found");
console.log(obj);
}
}
});
}
});
在我的 Objets api 中:
Meteor.publish('objetsFindOne', function objetsFindOne(param_id){
return Objets.find({_id : param_id});
})
我已经验证,当输入不同的 ID 时,我的 objetIdInput 总是会在点击时发生变化,但订阅总是返回输入的第一个 ID。我还添加了 onReady,因为否则它会返回未定义。
我是 Meteor 的新手,我也尝试过订阅所有集合并在客户端上进行查找,但我认为这不是最好的主意,因为我的集合有大约 22000 个文档。
最佳答案
只是对第一个答案进行一些详细说明,以了解如何更改此模式:
(1) 您应该将 Meteor.subscribe()
调用放在 Template.admin.onCreated()
函数中。
(2) 订阅从 react 值读取,例如 new ReactiveVar()
。
(3) 现在,只要 react 值发生变化,订阅就会重新运行。因此,在模板事件中,您将响应值设置为 id,并让订阅处理其余的事情。
Discover Meteor 和其他资源应该会对任何细节有所帮助。
关于javascript - 在模板事件中查找一个文档的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38439566/