3

libs フォルダー内で、SimpleSchema を使用してコレクションを作成します。次のように、autoValue を介して一部のフィールドに Meteor.userId を追加したいと考えています。

Collection = new Meteor.Collection('collection');
Collection.attachSchema(new SimpleSchema({
    createdByUser: {
        type: String,
        max: 20,
        autoValue: function() {
            return Meteor.userId();
        }
    }
});

ただし、これを行うと、次のエラーが表示されます。

Error: Meteor.userId can only be invoked in method calls. Use this.userId in publish functions.

私もこれを試しました:

var userIdentification = Meteor.userId();
Collection = new Meteor.Collection('collection');
Collection.attachSchema(new SimpleSchema({
    createdByUser: {
        type: String,
        max: 20,
        autoValue: function() {
            return userIdentification;
        }
    }
});

ただし、これによりアプリケーションがクラッシュします。

=> Exited with code: 8
=> Your application is crashing. Waiting for file change.

何か案は?

4

1 に答える 1

3

userIdを通じてに情報が提供さautoValueれるcollection2this

autoValue オプションは SimpleSchema パッケージによって提供され、そこに文書化されています。Collection2 は、C2 データベース操作の一部として呼び出される autoValue 関数の次のプロパティをこれに追加します。

  • isInsert: 挿入操作の場合は True
  • isUpdate: 更新操作の場合は True
  • isUpsert: upsert 操作の場合は true (upsert() または upsert: true)
  • userId: 現在ログインしているユーザーの ID。(サーバーが開始するアクションの場合は常に null です。)

したがって、コードは次のようになります。

Collection = new Meteor.Collection('collection');
Collection.attachSchema(new SimpleSchema({
    createdByUser: {
        type: String,
        max: 20,
        autoValue: function() {
            return this.userId;
        }
    }
});
于 2015-10-31T16:20:49.400 に答える