0

挿入しようとしたときに安全でないパッケージを削除した後、_id のみで新しいレコードが作成されます

サーバー上で Customers.collection への挿入を許可しました

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

クライアントでinsertを呼び出し、それにユーザーIDとフォームデータを渡します

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.methods({
    newCustomer: function (userID, record) {
        Customers.insert(userID, record);
                    console.log("Inserted");
    }
});

クライアントでは、insert ステートメントの代わりに次のように実行します。

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

これを機能させようとしている流星のドキュメントから、他の解決策を見つけることができませんでした。

4

1 に答える 1

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}
于 2013-03-28T19:37:51.497 に答える