以下是我当前的事件模型:
module.exports = {
attributes: {
name: {
type: 'string',
required: true,
unique: true
},
client: {
model: 'client',
required: true
},
location: {
model: 'location',
required: true
}
}
};
客户端型号:
module.exports = {
attributes: {
name: {
type: 'string',
required: true,
unique: true
},
address: {
type: 'string'
},
clientContact: {
model: 'user',
required: true
}
}
};
那么如何基于 client name
实现排序,并且还有 skip
和 limit
< / em>属性(用于分页)与它一起工作。
我尝试使用以下查询:
Event.find({ id: ['583eb530902db3d926345215', '583eb6dd91b972ee26dd97b1'] },
{ select: ['name', 'client'] })
.populate('client', { sort: 'name DESC' })
.exec((err, resp) => resp.map(r => console.log(r.name, r.client)));
但这似乎没有。
答案 0 :(得分:2)
Waterline不支持按照这样的子记录对结果进行排序。如果client
是附加到事件的子记录的集合,则您的代码会按名称对每个返回的Event
记录的已填充client
数组进行排序,但我假设在这种情况下client
是一个单一的关联(即model: 'client'
)。
如果你想要的是按客户名称排序的Event
个记录数组,你可以在检索记录后使用Lodash相对容易地做到这一点:
var _ = require('lodash');
Event.find(queryCriteria).populate('client').exec((err, resp) => {
if (err) { /* handle error */ }
var sortedRecords = _.sortBy(eventRecords, (record) => { return record.client.name; });
});