Есть ли способ вставить объект в БД, используя модуль mssql node.js - PullRequest
0 голосов
/ 23 мая 2018

Я нашел несколько примеров для вставки объектов в БД напрямую, выполнив что-то вроде:

var mysql      = require('mysql');

var connection = mysql.createConnection({
  host     : 'cccc.net',
  user     : 'username',
  password : 'password',
});

var post  = {srcUserID: userSrcID, destUserID: msg.userid, messageContent: msg.txt, messageSendDate:sendDate };

connection.query('INSERT INTO messages SET ?', post, function(err, result) {

});

Но это работает с модулем mysql, и в качестве базы данных используется SQL Server, поэтому я использую

var SQL_DB = require('mssql');

Есть ли способ вставить объекты непосредственно в БД таким же образом, как это возможно с модулем mysql.

1 Ответ

0 голосов
/ 23 мая 2018

просматривая документы node-mssql v4, они использовали это в качестве примера, используя обратные вызовы:

const sql = require('mssql');

const config = {
    user: '...',
    password: '...',
    server: 'localhost',
    database: '...',
    pool: {
        max: 10,
        min: 0,
        idleTimeoutMillis: 30000
    }
};

const pool = new sql.ConnectionPool(config);
const transaction = new sql.Transaction(pool);

transaction.begin(err => {
// ... error checks

    const request = new sql.Request(transaction)
    request.query('insert into mytable (mycolumn) values (12345)', (err, result) => {
    // ... error checks

        transaction.commit(err => {
            // ... error checks

            console.log("Transaction committed.")
        })
    })
})

EDIT: кажется, что node-mssql использует request.input для экранирования значений, но не принимает объект js, вы можете быстро сделать свой собственный:

sql.connect(config, err => {

var post  = {srcUserID: userSrcID, destUserID: msg.userid, messageContent: msg.txt, messageSendDate:sendDate };

const request = new sql.Request();

let cols = [];
let inputs = [];
for(let k in post) {
    request.input(k, post[k]);
    cols.push(k);
    inputs.push('@' + k);
}

let query = `insert into messages (${cols.toString()}) values (${inputs.toString()})`;

request.query(query, (err, result) => {
    //stuff here
});

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...