使用请求通过 id 数组查询 sailsjs 蓝图端点

Query sailsjs blueprint endpoints by id array using request

我正在使用 request 库从一个 sails 应用程序调用另一个暴露默认蓝图端点的应用程序。当我通过非 id 字段查询时它工作正常,但我需要通过传递 id 数组来 运行 一些查询。问题是当你提供一个 id 时,只有第一个 id 被考虑,实际上不允许这种查询。

有办法解决这个问题吗?如果一切都失败了,我可以切换到另一个属性,但我需要知道是否有解决此问题的正确方法。

我的查询方式如下:

var idArr = [];//array of ids
var queryParams = { id: idArr };
var options: {
    //headers, method and url here
    json: queryParams
};
request(options, function(err, response, body){
    if (err) return next(err);
    return next(null, body);
});

提前致谢。

好吧,我切换到一个 hacky 解决方案来移动。

对于所有需要通过 id 数组查询的模型,我向模型添加了一个辅助属性。我们称它为 code。然后,在 afterCreate() 中,我更新了 code 并将其设置为等于 id。这会导致额外的数据库调用,但这很好,因为它只调用一次 - 在创建对象时调用。

这是代码。

module.exports = {
    attributes: {
        code: {
            type: 'string'//the secondary attribute
        },
        // other attributes
    },
    afterCreate: function (newObj, next) {
        Model.update({ id: newObj.id }, { code: newObj.id }, next);
    }
}

请注意,newObj 并不是我所相信的模型对象。所以我们不能简单地更新它的 code 并调用 newObj.save().

在此之后,在具有 id 个数组的查询中,将 id 替换为 code 会使它们按预期工作!

Sails 蓝图 API 允许您使用您将在代码中使用的相同基线查询语言。

您可以直接在get调用中传递id的数组来接收对象,如下所示

GET /city?where={"id":[1, 2]}

参考here了解更多。

玩得开心!