答案 0 :(得分:0)
好的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
进行本地修复。