1

我正在使用请求库从一个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);
});

提前致谢。

4

2 回答 2

2

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

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

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

请参阅此处了解更多信息。

玩得开心!

于 2015-07-22T07:58:07.733 回答
1

好吧,我切换到一个 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在此之后,在具有数组的查询中,替换idcode使它们按预期工作!

于 2015-07-15T21:43:48.420 回答