SQL Server возвращает результаты дважды за один вызов? - PullRequest
0 голосов
/ 04 июля 2018

Я подключил базу данных SQL Server к простому серверу node.js. Когда я запускаю код, мне возвращаются наборы записей и набор записей. Оба они по существу содержат одни и те же данные. Я могу работать с этим, но это кажется излишним и было бы лучше просто назвать именно те записи, которые мне нужны.

Я надеялся получить четкое объяснение ELI5, так как документация mssql npm несколько смущает, на мой взгляд.

Вот код ниже:

const express = require('express');
const cors = require('cors');
const sql = require('mssql');
const app = express();
const sqlServer = 'hasea\\SQLExpress'

const selectAllQuery = 'SELECT * FROM dbo.users';
const config = {
    user: 'nbar',
    password: 'nb',
    server: sqlServer,
    database: 'nirvanaBar'
}

// SQL Select function
function DBconn(query, res) {

    sql.connect(config, function (err) {
        if (err) console.log(err);
        var request = new sql.Request();

        request.query(query, function (err, row) {
            if (err) console.log(err)
            res.json({
                data: row
            })
        })
    })
}
app.use(cors());

app.get('/', (req, res) => {
    res.send("Hello from the server")
});

app.get('/users', (req, res) => {
    //query?
    //var andrew = "select * from dbo.users where firstName = 'Andrew';"
    var matt = "select * from dbo.users where firstName = 'Matt';"
    //DBconn(selectAllQuery,res);
    DBconn(matt, res);

})
app.listen(4000, () => {
    console.log(`Server started on port 4000`)
})

Результаты:

enter image description here

Я вижу, что это уже упоминалось ранее, но я не понимаю, что происходит, и документация не дает много информации о том, почему это так. Я могу использовать данные, я просто подумал, что было бы лучше вернуть и наборы записей, и набор записей.

Заранее спасибо

1 Ответ

0 голосов
/ 04 июля 2018

Это ожидаемое поведение mssql, посмотрите документацию здесь . Когда вы выполняете несколько операторов, это позволяет вам иметь несколько наборов записей

Вы заметите, что на самом деле существует 2 свойства

набор записей (единственное число) а также наборы записей (множественное число)

набор записей (в единственном числе) относится к первому оператору, который выполняется. В вашем случае вы можете просто использовать это

наборов записей (множественное число) - это массив наборов записей, в вашем случае в массиве будет только один, поскольку вы выполняете только один оператор.

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