我正在寻找一种使用knex.raw()方法将对象插入postgreSQL
数据库中的方法。
这是我的尝试,它可以工作,但是我不知道这是否是最好的方法。
const newLink = {
url: 'http://github.com',
name: 'GitHub',
description: 'GitHub is awesome',
rel: '',
last_update: new Date()
};
const columns = Object.keys(newLink);
const values = Object.values(newLink);
console.log('columns: ', columns);
console.log('values: ', values);
const sql = `
INSERT INTO link (${columns.map(col => col).join(',')})
VALUES (${values.map(() => '?').join(',')})
`;
console.log('sql: ', sql);
try {
const insertObjResp = await knex.raw(sql, values);
console.log('insertObjResp: ', insertObjResp);
} catch (error) {
console.error(error);
}
knex
给我这样的调试信息:
{ method: 'raw',
sql: '\n INSERT INTO link (url,name,description,rel,last_update)\n VALUES (?,?,?,?,?)\n ',
bindings:
[ 'http://github.com',
'GitHub',
'GitHub is awesome',
'',
2018-11-20T04:47:21.085Z ],
options: {},
__knexQueryUid: '304fb5e5-9864-4ec6-9a63-1051e8e3c9ad' }
是否有knex.js
官方方式可以完成这项工作?谢谢。
答案 0 :(得分:-1)
是否有knex.js官方方法来完成这项工作?谢谢。
官方方法是使用knex.insert()
。
您的代码似乎正确,没有更好的方法。值和knex.raw
的数组使用起来有点不方便。当然,您至少应该将该怪物包装在辅助函数中。