Я обрабатываю свои SQL-запросы следующим образом (что работает):
const sql = require("mssql/msnodesqlv8");
const conn = new sql.ConnectionPool({
database: "MyDatabase",
server: "localhost\\SQLEXPRESS",
driver: "msnodesqlv8",
options: {
trustedConnection: true
}
});
async function runSQLQuery(insertReq, query) {
try {
await conn.connect();
var result = await insertReq.query(query);
await conn.close();
return result;
} catch (ex) {
console.log(ex);
return undefined;
} finally {
if (conn.connected)
conn.close();
}
}
и создаю такие запросы (которые также работают):
exports.getClientByID = async function (ID) {
var insertReq = conn.request();
insertReq.input("ID", sql.UniqueIdentifier, ID);
const request = await runSQLQuery(insertReq, `SELECT TOP (1) * FROM ${ClientTabel} WHERE ID = @ID`);
return request.recordset[0]
};
Но теперь я хочудобавить массив в качестве параметра, как это (и это не работает):
exports.getUsersWithProperty = async function (properties) {
var insertReq = conn.request();
insertReq.input("properties", sql.NVarChar, properties);
const request = await runSQLQuery(insertReq, `SELECT * FROM ${ClientTabel} WHERE Property IN @properties`);
return request.recordset;
};
Но при этом я получаю только
Ошибка запроса "Неверный синтаксис рядом" @properties".
Полагаю, тип sql.NVarChar
неправильный, но я не знаю, что это за правильный тип. Какое решение для этого?