edge.js - невозможно запустить параметризованный запрос, где параметр имеет нулевое значение
Я пытаюсь записать данные в SQL Server из приложения Node.js, используя edge.js. Данные данные имеют определенную степень изменчивости, так что определенные свойства часто не определены. Это необязательные значения, которые представлены как таковые в базе данных, например referrer (nvarchar(255), null)
,
При обработке данных я сопоставляю их с заранее определенным классом модели и явно устанавливаю undefined
свойства к null
, Это гарантирует, что присутствуют все параметры, необходимые для запроса. Тем не менее, когда я запускаю запрос, в файле edge.js сообщается, что параметр не указан. Если я изменю null
Значение должно быть пустой строкой, это работает, но это явно не желательно. Пример кода...
var edge = require('edge');
// entity to save
var Visit = function Visit(obj) {
obj = obj || {};
this.eventtype = 'Visit';
this.visitguid = obj.visitguid;
this.url = obj.url || null;
this.useragent = obj.useragent || null;
this.referrer = obj.referrer || null;
this.created = obj.created || null;
return this;
}
var insertVisit = edge.func('sql', function () {/*
INSERT INTO Visits (guid, url, useragent, referrer, created)
VALUES
(@visitguid
,@url
,@useragent
,@referrer
,CONVERT(DATETIME, @created, 103))
*/});
var visit = new Visit({
visitguid: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
url: 'www.a-website.com/page/',
useragent: 'Googlebot',
created: '13/06/2014 12:41.000'
});
insertVisit(visit, function (err, result) { /* callback code here */ });
Выдается ошибка
error: System.AggregateException: One or more errors occurred. --->
System.Data.SqlClient.SqlException: The parameterized query '(@eventtype nvarchar(28),@visitguid nvarchar(36),@url nvarchar(3' expects the parameter '@referrer', which was not supplied.
Я предполагаю, что это проблема / ограничение в файле edge.js. Например, в C# вы бы установить null
параметр для DBNull.Value
скорее, чем null
прямо, но нет никакого очевидного или документированного способа достичь этого в JavaScript. Есть ли способ сделать эту работу?
(Конечно, я мог бы использовать Edge для записи некоторого кода C# для записи в БД, но это будет немного сложнее, поэтому я бы предпочел сделать это, как описано выше, если это возможно.)
Любые советы будут оценены. Спасибо
1 ответ
Это теперь исправлено в edge-sql v0.1.2 (который также добавляет поддержку для вызова хранимых процедур в дополнение к базовым операциям CRUD).