我正在嘗試使用edge.js將數據寫入SQL Server從Node.js應用程序。所討論的數據具有一定的可變性,因此某些屬性通常是不確定的。這些是可選的值,並且在數據庫中如此表示。 referrer (nvarchar(255), null)
。edge.js - 無法運行參數化查詢,其中參數具有空值
處理數據時,我將其映射到預定義的模型類,並明確將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中沒有明顯或有記錄的方式來實現此目的。有什麼辦法可以做到這一點? (當然,我可以用邊寫出一些C#代碼來完成數據庫寫入,但這會涉及更多一些,所以如果可能的話,我傾向於像上面這樣做。)
任何提示將不勝感激。 謝謝
確認。非常感謝Tomasz。 –