我正在使用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);
});
提前致谢。
答案 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
会使其按预期工作!