【发布时间】:2014-09-05 08:08:16
【问题描述】:
我在客户端和服务器上定义了一个名为“材料”的集合。在一个模板中,我可以正确插入和更新材料。在另一个模板上,我可以插入和更新,但是当我刷新浏览器时,更改会丢失。
这两个视图被调用
view_materials(插入/更新作品)
view_orders(不起作用)
两个模板都将材料集合绑定到它们,如下所示:
//Bind viewOrders to Materials collection
Template.view_order.materials = function () {
return Materials.find();
};
// Bind materialsTemplate to Materials collection
Template.view_materials.materials = function () {
return Materials.find();
};
并且两者都使用下面的函数进行更新。
var docid = Materials.findOne({material_number: newMaterial.material_number});
console.log(docid._id);
Materials.update({_id:docid._id},{$set: {material_qty: total}});
请注意,打印到控制台的 ID 完全匹配。就像我提到的,在 view_orders 上它会在客户端更新片刻,但不会在另一个浏览器窗口中更新,也不会在从服务器重新加载后持续存在。在 view_materials 上它工作得很好。有什么想法吗?
我还在这里部署了一个错误示例: http://upexmple.meteor.com/
并将源代码添加到 github: https://github.com/stereochromatic/update_example
相关代码可见client/views/view_materials/view_materials.js 和 客户端/views/view_orders/view_orders.js
重复错误:
点击库存,在原材料下,输入 A 作为材料编号,输入 -50 作为数量。您将看到它已正确更新。现在单击创建发布并在原材料类型下,选择 A 和 -50 作为数量。您将看到正确的信息打印到控制台,您还可能会看到库存的更改,但刷新后这些更改就消失了。 - 显示引用的文本 -
【问题讨论】:
-
我在您的服务器代码中没有找到任何
allow调用。你在使用insecure包吗? -
您好,感谢您的回复。我还没有删除不安全或使用允许/拒绝、发布/订阅。我正在等待将其作为最后一步。
标签: javascript collections meteor