javascript - 在模板事件中查找一个文档的正确方法?

标签 javascript meteor

我正在尝试在 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/

相关文章:

meteor - 将 meteor 更新到 1.6.1.1 后找不到模块 '@babel/runtime/helpers/builtin/objectSpread'

javascript - 在 Meteor TODO 应用程序中添加另一个字段以形成表单?

javascript - 如何处理仅单击一个 <li> react 中的项目

javascript - 元素之间的动画延迟

javascript - 将模型类型设置为主干中具有外部 url 的集合

javascript - 在 MongoDB 中插入/更新插入嵌套文档

javascript - 为什么我的 `<div id="终端容器">` 为空?

javascript - 有没有人为 javascript 提议过 Pipe 运算符?

javascript - 获取插入符号位置的常见解决方案会返回奇怪的结果

meteor - 如何查看 Meteor 方法中抛出的错误?