Rest 使用请求按id数组查询sailsjs blueprint端点
我正在使用该库从一个sails应用程序调用另一个sails应用程序,该应用程序公开了默认的blueprint端点。当我通过非id字段进行查询时,它可以正常工作,但我需要通过传递id数组来运行一些查询。问题是,当您提供一个id时,只考虑第一个id,实际上不允许这种查询 有没有办法绕过这个问题?如果所有其他属性都失败,我可以切换到另一个属性,但我需要知道是否有合适的方法来解决这个问题 以下是我的疑问:Rest 使用请求按id数组查询sailsjs blueprint端点,rest,sails.js,requestjs,Rest,Sails.js,Requestjs,我正在使用该库从一个sails应用程序调用另一个sails应用程序,该应用程序公开了默认的blueprint端点。当我通过非id字段进行查询时,它可以正常工作,但我需要通过传递id数组来运行一些查询。问题是,当您提供一个id时,只考虑第一个id,实际上不允许这种查询 有没有办法绕过这个问题?如果所有其他属性都失败,我可以切换到另一个属性,但我需要知道是否有合适的方法来解决这个问题 以下是我的疑问: var idArr = [];//array of ids var queryParams = {
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);
});
提前谢谢。好吧,我换了一个黑客解决方案开始行动 对于所有需要按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 blueprint API允许您使用与代码中使用的水线查询语言相同的语言
您可以在get调用中直接传递id的数组来接收对象,如下所示
GET /city?where={"id":[1, 2]}
有关更多信息,请参阅
玩得开心 因为某种原因,上次我没用。重复同样的错误,最后发现我没有使用双引号。这是我头上的负担。谢谢