gpt4 book ai didi

postgresql - 使用 Postgres 的 StrongLoop 查询/存储过程?

转载 作者:行者123 更新时间:2023-11-29 12:32:57 25 4
gpt4 key购买 nike

根据文档,StrongLoop 不支持运行自定义 sql 语句。 https://docs.strongloop.com/display/public/LB/Executing+native+SQL

有人认为您如何仅通过简单的连接就可以构建企业应用程序,这超出了我的理解范围,但我确实发现这篇文章说您可以做到: Execute raw query on MySQL Loopback Connector

但这是针对 MySql 的。当我尝试使用 Postgres 时,出现错误:“'object' 类型的参数 'byId' 的值无效:0。接收到的类型已转换为数字。”它不返回任何数据。这是我的代码:

module.exports = function(account) {

account.byId = function(byId, cb){
var ds=account.dataSource;
var sql = "SELECT * FROM account where id > ?";
ds.connector.execute(sql, [Number(byId)], function(err, accounts) {
if (err) console.error(err);
console.info(accounts);
cb(err, accounts);
});
};
account.remoteMethod(
'byId',
{
http: {verb: 'get'},
description: "Get accounts greater than id",
accepts: {arg: 'byId', type: 'integer'},
returns: {arg: 'data', type: ['account'], root: true}
}
);
};

对于 [Number(byId)] 部分,我也尝试了 [byId] 和 byId。什么都没用。

有什么想法吗?到目前为止,我真的很喜欢 StrongLoop,但看起来 Postgresql 连接器还没有准备好投入生产。如果这不起作用,我接下来会用 Sails 做一个原型(prototype)。 :-(

最佳答案

这是 arg 类型的“整数”,它不是有效的 Loopback Type .请改用 `Number。检查下面更正的代码:

module.exports = function(account) {
account.byId = function(byId, cb){
var ds = account.dataSource;
var sql = "SELECT * FROM account WHERE id > $1";
ds.connector.execute(sql, byId, function(err, accounts) {
if (err) console.error(err);
console.info(accounts);
cb(err, accounts);
});
};
account.remoteMethod(
'byId',
{
http: {verb: 'get'},
description: "Get accounts greater than id",
accepts: {arg: 'byId', type: 'Number'},
returns: {arg: 'data', type: ['account'], root: true} //here 'account' will be treated as 'Object'.
}
);
};

注意 MySQL 的准备语句 native 使用? 作为参数占位符,但PostgreSQL 使用$1, $2

希望这对你有用。否则根据 docs 尝试使用 [byId] 而不是 byId .

关于postgresql - 使用 Postgres 的 StrongLoop 查询/存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33865971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com