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

时间:2015-07-15 15:18:56

标签: rest sails.js requestjs

我正在使用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);
});

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

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

data_df['days_since'] = pd.to_timedelta(data_df.groupby(['customer_id'])['date'].transform(lambda x: x - x.shift().fillna(pd.datetime(2000,1,1))))

请参阅here了解更多信息。

玩得开心!

答案 1 :(得分:1)

好吧,我改用了一个黑客的解决方案来移动。

对于需要通过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会使其按预期工作!