5

我在我的项目中使用KeystoneJS 的 Passport 身份验证插件。

如果用户帐户存在并且与正在使用的社交网络相关联,那么一切都会很好。但是,在使用 config 选项创建新用户时'auto create user': true,我最终在 oauth 回调路由上遇到 500 错误。日志说这是一个验证错误。

ValidationError: Validation failed 
  at model.Document.invalidate (/app/node_modules/keystone/node_modules/mongoose/lib/document.js:1021:32) 
  at /app/node_modules/keystone/node_modules/mongoose/lib/document.js:970:16 
  at validate (/app/node_modules/keystone/node_modules/mongoose/lib/schematype.js:610:7) 
  at /app/node_modules/keystone/node_modules/mongoose/lib/schematype.js:627:9 
  at Array.forEach (native) 
  at SchemaString.SchemaType.doValidate (/app/node_modules/keystone/node_modules/mongoose/lib/schematype.js:614:19) 
  at /app/node_modules/keystone/node_modules/mongoose/lib/document.js:968:9 
  at process._tickCallback (node.js:419:13)

这可能是什么原因造成的?


编辑

用户型号:

var keystone = require('keystone'),
Types = keystone.Field.Types,
social = require('keystone-social-login');

/**
 * User Model
 * ==========
 */

var User = new keystone.List('User');

User.add({
    name: { type: Types.Name, required: true, index: true },
    email: { type: Types.Email, initial: true, required: true, index: true },
    password: { type: Types.Password, initial: true, required: true }
}, 'Permissions', {
    userLevel: { type: Types.Select, options: 'user, business, admin', default: 'user', initial: true }
});

// Provide access to Keystone
User.schema.virtual('canAccessKeystone').get(function() {
    return this.userLevel === 'admin';
});


/**
 * Registration
 */

social.plugin(User);

User.defaultColumns = 'name, email, userLevel';
User.register();
4

0 回答 0