Sailsjs / Passport向User添加字段

时间:2016-06-07 22:21:52

标签: node.js sails.js passport.js

在这里帆船。我有sailsjs(v0.12.3)与护照一起运行,一切正在运行。 User模型位于/node_modules/sails-auth/api/models/User.js中,并具有用户名,电子邮件和护照字段。我想在users表中添加其他字段(如bday - > string,favorite_car-> string),但无法找到执行此操作的好方法。编辑现有的User.js文件以添加新属性可能会有效,但似乎是一个坏主意。我已经尝试创建一个User.js文件(在myproj / api / models /中),但是我收到错误声明:

错误:映射自定义外键:role-> user。属性:roles不存在于:集合:user

非常感谢任何有关最佳方法的见解。 感谢

加入: 我尝试了许多不同的迭代,从空的User.js文件(在myproj / api / models /中)到sails-auth附带的整个代码(在myproj / node_modules / sails-auth / dist / api / models / User中) .js文件)。它们都会产生相同的错误。以下是尝试从node_modules的User.js:

的代码
'use strict';

var _ = require('lodash');
var crypto = require('crypto');

/** @module User */
module.exports = {
  attributes: {
    username: {
      type: 'string',
      unique: true,
      index: true,
      notNull: true
    },
    email: {
      type: 'email',
      unique: true,
      index: true
    },
    passports: {
      collection: 'Passport',
      via: 'user'
    },

    getGravatarUrl: function getGravatarUrl() {
      var md5 = crypto.createHash('md5');
      md5.update(this.email || '');
      return 'https://gravatar.com/avatar/' + md5.digest('hex');
    },

    toJSON: function toJSON() {
      var user = this.toObject();
      delete user.password;
      user.gravatarUrl = this.getGravatarUrl();
      return user;
    }
  },

  beforeCreate: function beforeCreate(user, next) {
    if (_.isEmpty(user.username)) {
      user.username = user.email;
    }
    next();
  },

  /**
   * Register a new User with a passport
   */
  register: function register(user) {
    return new Promise(function (resolve, reject) {
      sails.services.passport.protocols.local.createUser(user, function (error, created) {
        if (error) return reject(error);

        resolve(created);
      });
    });
  }
};

0 个答案:

没有答案