【发布时间】:2017-08-30 17:32:51
【问题描述】:
我正在运行 NodeJS 和 pg-promise,并且正在尝试完成以下操作:
db.none('INSERT INTO my-table (JSON-object-keys) VALUES ($1)', [JSON-object-values])
.catch(function(err) {
console.log('Error on insert into my-table: ' + err);
});
我有 JSON 对象,看起来像:
{"column1":"value1", "column2":"value2", "column3":"value3"}
{"column2":"value2", "column3":"value3"}
{"column1":"value1", "column3":"value3"}
我希望根据 JSON 对象包含的内容自动生成 INSERTS。
这可能以一种优雅的方式吗?
解释一下,在 3 个 JSON 示例中应该生成以下内容:
db.none('INSERT INTO my-table (column1, column2, column3) VALUES ($1, $2, $3)', [value1, value2, value3])
.catch(function(err) {
console.log('Error on insert into my-table: ' + err);
});
db.none('INSERT INTO my-table (column2, column3) VALUES ($1, $2)', [value2, value3])
.catch(function(err) {
console.log('Error on insert into my-table: ' + err);
});
db.none('INSERT INTO my-table (column1, column3) VALUES ($1, $2)', [value1, value3])
.catch(function(err) {
console.log('Error on insert into my-table: ' + err);
});
【问题讨论】:
-
VALUES ($1:json) -
列呢?
-
更新了我正在寻找的更多示例。
-
最简单的方法是为一组静态定义的列生成相同的插入,然后对于您不想插入的列,提供
DEFAULT作为值。在我提供一个可用的示例之前 - 要跳过的列的标准是什么? - 相应的属性不存在吗?此外,请提供您拥有的列的完整列表,指定其中哪些是可选的。 -
在我的测试表中,我有 3 列名为 column1、column2 和 column3。我的 JSON 对象可能包含也可能不包含所有 3 列键 - 我不能保证 json 对象中的顺序。
标签: node.js pg-promise