2014-06-13 87 views
0

我正在嘗試使用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#代碼來完成數據庫寫入,但這會涉及更多一些,所以如果可能的話,我傾向於像上面這樣做。)

任何提示將不勝感激。 謝謝

回答

0

這現在已經修復在edge-sql v0.1.2中(除了基本的CRUD操作外,它還增加了對調用存儲過程的支持)。

+0

確認。非常感謝Tomasz。 –