Meteor(0.9.0.1):使用Helper和autoform更新多个用户的记录

时间:2014-09-03 19:16:34

标签: javascript meteor

我正在构建管理区域。我认为让多个管理员用户都可以访问相同的数据会很有用。我正在使用此roles package

我使用autoform生成表单,因此当以“AdminA”身份登录时,此用户在表单中输入值并提交,然后将记录存储在AdminA的帐户下。 AdminB然后登录但没有看到表单上的值,因为该用户无权访问AdminA的帐户。我需要一种告诉autoform更新一条记录的方法。

以下代码是我想要实现的。任何人都可以建议我需要做些什么才能让它发挥作用?我看过autoform docs,我不太确定。

表单输入框在渲染时看起来有点像这样:

<input type="text" name="VehiclePrice" value="10000" />
<input type="hidden" name="_id" value="LEXANiNZtunFPfBea">

模板:

<template name="VehiclePrice">
 {{#if submitted}}
    {{> quickForm collection="VehiclePrice" omitFields="createdBy" doc=editingDoc id="VehiclePrice" type="update"}}
 {{else}}
    {{> quickForm collection="VehiclePrice" omitFields="createdBy" id="VehiclePrice" type="insert"}}
 {{/if}}
</template>

助手:

Template.VehiclePrice.helpers({ 
 VehiclePrices: function () {
   return VehiclePrice.find().map(function (c) {
     return {price: c.price, _id: c._id};
   });
 }
});

关系将是许多管理员用户与一个记录(*:1)

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

通过发布车辆集合,您可以以编程方式确定谁有权访问数据,以及发布的数据集。看一下Meteor发布文档(http://docs.meteor.com/#meteor_publish)。

设置集合后,您可以使用以下内容确定通过publish命令发布的数据集:

Meteor.publish("vehicleInfo", function () { if ( this.role == "admin" ) return Vehicle.find(); else return Vehicle.find({some subset of the data, or none at all (false)}); });

答案 1 :(得分:0)

事实证明,这是我的一位助手的问题。它限制了用户的数据,我对此表示赞赏并且工作正常。