Rest 使用请求按id数组查询sailsjs blueprint端点

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 = {

我正在使用该库从一个sails应用程序调用另一个sails应用程序,该应用程序公开了默认的blueprint端点。当我通过非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);
});

提前谢谢。

好吧,我换了一个黑客解决方案开始行动

对于所有需要按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]}
有关更多信息,请参阅


玩得开心

因为某种原因,上次我没用。重复同样的错误,最后发现我没有使用双引号。这是我头上的负担。谢谢