如何创建'计算' Waterline / Sails.js模型中的字段?

时间:2014-09-02 16:25:51

标签: javascript sails.js waterline sails-mongo

这是我的Users.model:

module.exports = {

    attributes: {

        name: {
            type: 'string',
            required: true,
            minLength: 3,
            maxLength: 30
        },

        username: {
            type: 'string',
            required: true,
        },

        toJSON: function() {
          var obj = this.toObject();
          obj.link = sails.config.globals.baseUrl + sails.config.routes.user + obj.id;
          return obj;
        }
    }
  };

我想要的是使用一些属于' pre'在模型上计算。 我的解决方案是在toJSON()函数中注入attr,但在我必须使用的视图中:

<%= users.toJSON().link %> 

有哪种方法可以为用户创建属性或某些方法?像:

module.exports = {

       attributes: {

        name: {
            type: 'string',
            required: true,
            minLength: 3,
            maxLength: 30
        },
        myPersonalAttribute: function(){
           return "Value"   
        }
}

2 个答案:

答案 0 :(得分:2)

您可以使用属性方法返回派生值。请在此处查看我对您的github问题的回复:https://github.com/balderdashy/waterline/issues/626#issuecomment-54192398

答案 1 :(得分:0)

module.exports = {

    attributes: {

        name: {
            type: 'string',
            required: true,
            minLength: 3,
            maxLength: 30
        },

        myPersonalAttribute: function() {
            return "Value"
        },

        toJSON: function() {
            var obj = this.toObject()
            obj.myPersonalAttribute = this.myPersonalAttribute()
            return obj
        }
    }
}