【发布时间】:2017-06-10 13:32:33
【问题描述】:
【问题讨论】:
标签: loopbackjs strongloop
【问题讨论】:
标签: loopbackjs strongloop
到目前为止,Loopback ORM 不支持它(可能永远不会),但您始终可以直接使用 MySQL 驱动程序:
var ids = [4,5,6,7]
YourModel.dataSource.connector.query('SELECT * FROM something ORDER BY FIELD(id, ?)', ids, (err, results) => {
//...
});
但如果你想成为数据库不可知论者,你可以用 Javascript 来实现:
var ids = [4,5,6,7]
SomethingModel.find().then(rows => {
rows.sort(function (a, b) {
return ids.indexOf(a) - ids.indexOf(b);
});
//...
});
或者对于更大的数组来说快一点(通过索引):
var idList = [4,5,6,7];
var idMap = {};
idList.forEach(function (id, index) {
idMap[id] = index;
});
SomethingModel.find().then(rows => {
rows.sort(function (a, b) {
return idMap[a] - idMap[b];
});
//...
});
如果您在代码中的许多地方执行此操作,您也可以生活得有点危险,并且猴子补丁 connector.buildOrderBy 可以在本机执行此操作。
【讨论】:
connector.query,所以默认情况下不会调用任何钩子。您也可以在远程方法中执行此操作,但要运行挂钩:SomethingModel.notifyObserversOf('before save', context, err => { ... })