首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL函数参数JSON类型

PostgreSQL函数参数JSON类型
EN

Database Administration用户
提问于 2017-07-19 17:53:33
回答 1查看 2.2K关注 0票数 1

我尝试将我的NodeJS API连接到我的数据库。

我已经为传输创建了某种类型的对象。我用LANGUAGE plpgsql

一个例子是:

API_CAR:这种类型存在于我的数据库中

我收到JSON中的一个对象API_CAR

代码语言:javascript
复制
{
"car_id": 18,
"car_brand": "AUDI",
"car_model": "A4",
"car_nb_places": 5,
"car_picture_url": "http://...",
"horse_power": 3
}

我想直接把数据传递给我的函数:

代码语言:javascript
复制
SELECT * FROM carPATCH( ... );

我知道我可以这样做:

代码语言:javascript
复制
SELECT * FROM carPATCH
(
   (18,'et','vel',5,'Donec dignsque',3):: API_CAR
);

但这招很复杂。

我的问题是你会怎么建议:

在NodeJS中在数据库之外进行这种转换更好,还是我可以直接在内部传递这个JSON,然后再对它进行转换?

我认为应该可以将JSON转换为另一种类型,但我不知道如何实现。

这是一个简单的例子,但我有一些大的结构要转发到数据库。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-07-20 15:08:58

我们可以使用json_人口_记录()来实现这一点。它非常容易使用:

代码语言:javascript
复制
json_populate_record(null::API_CAR, <your JSON here>)

用NodeJS举例:

代码语言:javascript
复制
exports.carPATCH = function (apiKey, args, res, next) {

    let car = "'" + JSON.stringify(args.v_car.value) + "'";
    apiKey = "'" + apiKey + "'";

    DB.query.any("SELECT * FROM v01_api_patch_carPATCH" +
        "(json_populate_record(NULL::API_CAR," + car + ")," + apiKey + ")", [true])
        .then(data => {
            res = resp.response_201(res, data);
        })
        .catch(error => {
            res = resp.error(res, error);
        })
};

之后,我的函数工作得很好,因为它是一个对象API_CAR

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/180270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档