如何设置Meteor.userId()以在autoform / simple-schema中使用?

时间:2014-08-18 18:01:38

标签: javascript meteor

说我希望在用户登录后显示用户购物项目的列表。我正在使用autoform和simple-schema来生成表单元素。当用户第一次登录时,将显示空白购物清单表单。提交表单时,购物清单保存在数据库中。

我想知道的是如何为每个用户保存这些数据。

通常我会做这样的事情:

      ShoppingList.insert({
        name: item_name,
        price: 0,
        createdBy: Meteor.userId()
      });

我如何使用autoform和simple-schema实现这一目标?是否有可能做到这样的事情:

Schema.ShoppingList = new SimpleSchema({
item: {
    type: String,
    regEx: /^[a-zA-Z-]{2,25}$/
},
price: {
    type: Number,
    regEx: /^[0-9]{2,25}$/
},
createdBy: {
    type: String,
    value: Meteor.userId()
}
});

再次感谢:)

3 个答案:

答案 0 :(得分:20)

如果您还使用Collection2,请使用autoValue:

Schema.ShoppingList = new SimpleSchema({
item: {
    type: String,
    regEx: /^[a-zA-Z-]{2,25}$/
},
price: {
    type: Number,
    regEx: /^[0-9]{2,25}$/
},
createdBy: {
    type: String,
    autoValue:function(){ return this.userId }
}
});

了解更多: https://github.com/aldeed/meteor-collection2/

答案 1 :(得分:5)

这对我有用:

creatorID: {
    type: String,
    regEx: SimpleSchema.RegEx.Id,
    autoform: {
        type: "hidden",
        label: false
    },
    autoValue: function () { return Meteor.userId() },
}

答案 2 :(得分:1)

this.userId()对我没用,相反,这样做了:

    autoValue: function() {
        return Meteor.user()._id;
    }