Кажется, здесь есть две разные ошибки.Давайте сначала посмотрим на connection.release is not a function
.
oracledb.getConnection
- это асинхронная функция.Он возвращает undefined
, если последний параметр является функцией обратного вызова или обещание, если последний параметр не является функцией обратного вызова.В любом случае он не возвращает соединение напрямую.
Поскольку вы не передали функцию обратного вызова в качестве последнего параметра, он возвращает обещание.В обещании нет метода release
, поэтому вы получаете ошибку при вызове connection.release
.Однако вы уже закрываете соединение с помощью conn.close
в другом пути кода.
Что касается NJS-006: invalid type for parameter 1 at Object.assert
, это связано с вашим вызовом conn.execute
(как указано в стеке ошибок).Вот что у вас есть:
conn.execute(
`INSERT INTO table1 (department_id, department_name) VALUES` [req.body.department_id, req.body.department_name]
)
Обратите внимание, что вы передаете одно значение (выражение) для выполнения, а не два параметра, которые вы, возможно, намеревались (пропуская запятую).Литерал шаблона и массив могут привести к странным значениям:
console.log(`string` [1]); // "t"
console.log(`string` [{}]); // undefined
Скорее всего, вы передаете undefined
в conn.execute
.Это один из тех "Ват?"моменты.:) https://www.destroyallsoftware.com/talks/wat
После того, как вы это исправите, вам также потребуется обновить оператор вставки, в котором в настоящее время отсутствуют переменные связывания.Смотрите этот пост (часть серии по API REST) для некоторых указателей: https://jsao.io/2018/04/creating-a-rest-api-handling-post-put-and-delete-requests/