嗨,请考虑这个例子
// 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'
答案 0 :(得分:1)
从服务器发送模型数据时调用toJSON
方法,而不是在查询期间。因此,查询期间surname_and_name
属性不可用;只有真实的模型属性才能用作查询参数。如果这种排序对您很重要,我建议您为模型创建一个实际的surname_and_name
属性,每次保存模型时都会自动计算该属性,使用模型类{{1 }}和afterCreate()
lifecycle callbacks。