我正在尝试使用Node.js和“ mssql”包将一些JSON数据存储到SQL Server表中。但是,我需要动态生成表并填充它。
我已经根据传入的任何JSON数据定义了表,现在我需要用JSON数据填充该表。我的问题是我不知道如何动态创建mssql.Table行。进行以下操作
var sql = require('mssql');
var table = new sql.Table('table');
table.columns.add('one', sql.VarChar(2));
table.columns.add('two', sql.VarChar(2));
table.columns.add('three', sql.VarChar(2));
table.rows.add('1', '2', '3');
table.rows.add('4', '5', '6');
table.rows.add('7', '8', '9');
table.rows.add('10', '11', '12');
table.rows.add(row);
结果是
Table {
name: 'table',
schema: null,
database: null,
path: '[table]',
temporary: false,
columns:
[ { type: [sql.VarChar],
length: 2,
name: 'one',
nullable: undefined,
primary: undefined },
{ type: [sql.VarChar],
length: 2,
name: 'two',
nullable: undefined,
primary: undefined },
{ type: [sql.VarChar],
length: 2,
name: 'three',
nullable: undefined,
primary: undefined } ],
rows:
[ [ '1', '2', '3' ],
[ '4', '5', '6' ],
[ '7', '8', '9' ],
[ '10', '11', '12' ] ] }
添加时
var row = {one: '13', two: '14', three: '15'};
table.rows.add(row);
row = ['16', '17', '18']
table.rows.add(row);
我懂了
Table {
name: 'table',
schema: null,
database: null,
path: '[table]',
temporary: false,
columns:
[ { type: [sql.VarChar],
length: 2,
name: 'one',
nullable: undefined,
primary: undefined },
{ type: [sql.VarChar],
length: 2,
name: 'two',
nullable: undefined,
primary: undefined },
{ type: [sql.VarChar],
length: 2,
name: 'three',
nullable: undefined,
primary: undefined } ],
rows:
[ [ '1', '2', '3' ],
[ '4', '5', '6' ],
[ '7', '8', '9' ],
[ '10', '11', '12' ],
[ [Object] ],
[ [Array] ] ] }
显然这不是我想要的。
做类似的事情
var row = new sql.Table.row;
row.item.add('13')
row.item.add('14')
row.item.add('15')
table.rows.add(row);
这就是我要尝试执行的操作,这将使我可以将所需的任何值添加到表中,而无需对其进行硬编码。查看mssql软件包文档,找不到任何提及此类内容的内容。
任何帮助将非常感激!谢谢!
最佳答案
您需要对数组进行解构以将数组的值作为单个值发送,您可以执行以下操作:
var rowObj = { one: '13', two: '14', three: '15' };
var rowArr = ['16', '17', '18'];
// converting obj to arr of object value
var rowObjArr = Object.values(rowObj);
// adding array to the table, using array destructuring
table.rows.add(...rowObjArr);
table.rows.add(...rowArr);
使用数组扩展运算符(
...array
),您可以执行以下操作:function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction(...args);
这将使我能够将数组的值作为函数的单个参数发送。
参考:Spread in function calls
关于javascript - Node.js和mssql基于JSON动态填充表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45866033/