首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >edge.js -无法运行参数化查询(参数为空值)

edge.js -无法运行参数化查询(参数为空值)
EN

Stack Overflow用户
提问于 2014-06-13 11:56:51
回答 1查看 356关注 0票数 0

我试图使用Node.js应用程序使用edge.js将数据写入Server。所讨论的数据具有一定的可变性,因此某些属性通常是未定义的。这些是可选的值,在数据库中表示为可选值,例如referrer (nvarchar(255), null)

在处理数据时,我将其映射到预定义的模型类,并显式地将undefined属性设置为null。这将确保查询所需的所有参数都存在。但是,当我运行查询时,edge.js错误会抱怨没有提供参数。如果我将null值更改为空字符串,它就能工作,但这显然不可取。示例代码..。

代码语言:javascript
复制
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 */ });

引发的错误是

代码语言:javascript
复制
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设置为null,但是在JavaScript中没有明显的或有文档化的方法来实现这一点。有什么办法让这件事成功吗?

(当然,我可以使用edge编写一些C#代码来编写DB,但这会涉及到更多的问题,所以如果可能的话,我更愿意像上面这样做。)

如有任何建议,将不胜感激。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-13 17:33:10

现在在edge-sql v0.1.2中修正了这个问题(除了基本的CRUD操作之外,它还增加了对调用存储过程的支持)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24204751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档