删除不安全的包后,Meteor只插入一个ID而没有其他数据

时间:2013-03-28 19:02:50

标签: meteor

当我尝试插入时删除不安全的包后,只创建一个只有和_id的新记录

服务器上的

我允许在Customers.collection上插入

Customers.allow({
    insert: function(userID) {
        console.log(userID === userID);
        return userID === userID;
    }
});

在客户端我调用insert并传递userID和表单数据

Template.tabs.events({
'submit form#customer' : function (event) {

    console.log(event.type + event.currentTarget);

    if (event.type === 'click' || event.type === 'submit') {

        event.preventDefault();

        var name = $("#name").val();
        var address = $("#address").val();
        var city = $("#city").val();
        var state = $("#state").val();
        var zip = $("#zip").val();
        var phone = $("#phone").val();
        var fax = $("#fax").val();

        doc = {user_id: this.userID, name: name, address: address, city: city, state: state, zip: zip, phone: phone, fax: fax}

        if(Customers.insert(this.userID, doc)) {
            console.log("Inserted");
            $("#name").val(null);
            $("#address").val(null);
            $("#city").val(null);
            $("#state").val(null);
            $("#zip").val(null);
            $("#phone").val(null);
            $("#fax").val(null);
        }
    }
}
});

我还尝试将插入包装在meteor方法中,并从客户端进行方法调用,但结果相同。

这是来自客户端的方法和调用

Meteor.methods({
    newCustomer: function (userID, record) {
        Customers.insert(userID, record);
                    console.log("Inserted");
    }
});

并在客户端而不是insert语句中执行如下操作。

Meteor.call("newCustomer", this.userID, doc);

我无法从流星文档中找出任何其他解决方案,试图让它发挥作用。

1 个答案:

答案 0 :(得分:2)

问题似乎是这一行:

if(Customers.insert(this.userID, doc)) {

您插入的文档应该是这样的,插入的文档是参数

if(Customers.insert(doc)) {

您的允许功能需要检查实际文档:

Customers.allow({
    insert: function(userID,doc) {
        return userID === doc.user_id;
    }
});

同时更改您的文档所有者,this.userId旨在用于服务器上的发布或Meteor.methods。要在其他位置获取已登录用户的用户ID,请使用Meteor.userId

doc = {user_id: Meteor.userId(), name: name, address: address, city: city, state: state, zip: zip, phone: phone, fax: fax}