1

単純なスキーマを使用してフィールドを結合しようとしています。には機能しますSchema.UserProfileが、 には機能しませんSchema.accountStatus

新しいアカウントを作成するときにフィールドにデータを入力しようとすると、エラーになります。理由についての考えは本当に役に立ちますか?

道:schemas.js

Schema = {};

Schema.accountStatus = new SimpleSchema({
    isUserAccountActive: {
        type: Boolean,
        optional: true
    },
    startDate: {
        type: Date,
        optional: true
    },
    endDate: {
        type: Date,
        optional: true
    }
});

Schema.UserProfile = new SimpleSchema({
    firstName: {
        type: String,
        optional: false
    },
    lastName: {
        type: String,
        optional: true
    },
});

Schema.User = new SimpleSchema({
    profile: {
        type: Schema.UserProfile,
        optional: true
    },
    // Make sure this services field is in your schema if you're using any of the accounts packages
    services: {
        type: Object,
        optional: true,
        blackbox: true
    },
    accountStatus: {
        type: Schema.accountStatus,
        optional: true

    },
    // In order to avoid an 'Exception in setInterval callback' from Meteor
    heartbeat: {
        type: Date,
        optional: true
    }
});

Meteor.users.attachSchema(Schema.User);

道:startup.js

Meteor.startup(function () {

  console.log('Running server startup code...');

  Accounts.onCreateUser(function (options, user) {
    if (options.profile && options.profile.roles) {
      //include the user profile
      Roles.setRolesOnUserObj(user, options.profile.roles);
    }

    if (options.profile) {
      // include the user profile
      user.profile = options.profile;
    }

    // other user object changes...
    // ...
    user.isUserAccountActive = false;


    return user;
  });

});
4

1 に答える 1

2

わかりました:isUserAccountActiveのサブキーですaccountStatus。変化する:

user.isUserAccountActive = false;

user.accountStatus = { isUserAccountActive: false };

ただし、サーバー側でこの更新を行っているため、サーバーエラーが発生する理由は明らかではありません。

于 2016-02-04T04:47:23.623 に答える