使用请求通过 id 数组查询 sailsjs 蓝图端点
Query sailsjs blueprint endpoints by id array using request
我正在使用 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);
});
提前致谢。
好吧,我切换到一个 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
个数组的查询中,将 id
替换为 code
会使它们按预期工作!
Sails 蓝图 API 允许您使用您将在代码中使用的相同基线查询语言。
您可以直接在get调用中传递id的数组来接收对象,如下所示
GET /city?where={"id":[1, 2]}
参考here了解更多。
玩得开心!
我正在使用 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);
});
提前致谢。
好吧,我切换到一个 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
个数组的查询中,将 id
替换为 code
会使它们按预期工作!
Sails 蓝图 API 允许您使用您将在代码中使用的相同基线查询语言。
您可以直接在get调用中传递id的数组来接收对象,如下所示
GET /city?where={"id":[1, 2]}
参考here了解更多。
玩得开心!