SailsJS如何对从另一个模型填充的实例方法和实例方法应用sort by?

时间:2014-05-24 12:28:55

标签: node.js sails.js waterline

嗨,请考虑这个例子

//        surname_and_name: function(){
//            return (this.name_last==null ? '' : this.name_last + ' ') +
//                (this.name_middle==null ? '': this.name_middle + ' ') +
//                (this.name_first==null ? '' : this.name_first + ' ')  +
//                (this.name_prefix==null ? '' : this.name_prefix + ' ') +
//                (this.name_suffix==null ? '' : this.name_suffix);
//        },

     toJSON: function() {
        var obj = this.toObject();
        obj.surname_and_name = (obj.name_last==null ? '' : obj.name_last + ' ') +
            (obj.name_middle==null ? '': obj.name_middle + ' ') +
            (obj.name_first==null ? '' : obj.name_first + ' ')  +
            (obj.name_prefix==null ? '' : obj.name_prefix + ' ') +
            (obj.name_suffix==null ? '' : obj.name_suffix);
       return obj;
    }

我正在尝试通过" surname_and_name"进行查询和排序。计算字段。 我也尝试了注释代码,我得到了这个错误,方法

co_user.find(sort : {surname_and_name: 'asc' }).exec(error,res) 

Error: ER_BAD_FIELD_ERROR: Unknown column 'co_user.surname_and_name' in 'order clause'

1 个答案:

答案 0 :(得分:1)

从服务器发送模型数据时调用toJSON方法,而不是在查询期间。因此,查询期间surname_and_name属性不可用;只有真实的模型属性才能用作查询参数。如果这种排序对您很重要,我建议您为模型创建一个实际的surname_and_name属性,每次保存模型时都会自动计算该属性,使用模型类{{1 }}和afterCreate() lifecycle callbacks