过滤回送API,仅获取最新版本的行

时间:2018-08-03 13:50:53

标签: json api loopbackjs

我是回环的新手,所以这是我的问题:

我有一个名为“ config-tables”的模型,其中包含以下测试数据:

 [
    {
    ID: 0,
    CONFIG_NAME: "MainColor",
    DATA_TYPE: "color",
    CONFIG_VALUE: "#FF0000",
    VERSION: 1
    },

    {
    ID: 1,
    CONFIG_NAME: "MainColor",
    DATA_TYPE: "color",
    CONFIG_VALUE: "#FF00FF",
    VERSION: 2
    }
 ]

我想创建两个自定义方法并将其公开给API:

第一个是获取最新版本的方法。

第二种方法是获取最新版本(在这种情况下为version = 2)的所有数据的方法。

我已经阅读了很多有关环回过滤器的信息,但是无法弄清楚如何在SQL中使用类似于MAXTOP的东西。

1 个答案:

答案 0 :(得分:0)

也许还有更好的事情要做-但我只是在 /common/models/config-tables.js 中创建两个远程方法,以获取您的 config-表格实体按版本属性排序:

'use strict';
module.exports = function (configTable) {

    //first
    configTable.getLastVersion = function (cb) {
        // find only one configTable ordered by version
        configTable.findOne({order: 'VERSION DESC'}, function (err, config) {
            if(config && config.VERSION) {
                cb(err, config.VERSION);
            } else {
                // or throw a new error, depending on what you want
                cb(err, 0);
            }
        });
    };

    configTable.remoteMethod('getLastVersion', {
        returns: {arg: 'VERSION', type: 'number'},
        http: {verb: 'get'}
    });

    //second (depending on the first method)
    configTable.getLatests = function (cb) {
        configTable.getLastVersion(function (err, last_version) {
            if(err || !last_version || last_version === 0) {
                // maybe throw error here
                return cb(new Error("No config found actually..."));
            } else {
                // find all configTables where VERSION = last version
                configTable.find({where: {VERSION: last_version}}, function (err, configs) {
                    cb(err, configs);
                });
            }
        });
    };

    configTable.remoteMethod('getLatests', {
        returns: {arg: 'configTables', type: 'object'},
        http: {verb: 'get'}
    });
};