Loopback:MySQL函数按顺序过滤

时间:2017-06-01 17:12:29

标签: loopbackjs strongloop

我想在MySQL functions中使用Node order filter

我现在需要的功能是FIELD

谢谢大家!

1 个答案:

答案 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进行本地修复。