0

我想知道数据库中是否存在记录,使用与关键字段不同的字段。

我尝试了以下代码:

function start()
{
  jlog("start db query")
  myType d1 = {A:"rabbit", B:"poney"};
  /myDataBase/data[A == d1.A] = d1
  jlog("db write done")
   option opt = ?/myDataBase/data[B == "rabit"]
  jlog("db query done")

  match(opt)
  {
   case {none} : <>Nothing in db</>
   case {some:data} : <>{data} in database</>
  }
}

Server.start(
   {port:8092, netmask:0.0.0.0, encryption: {no_encryption}, name:"test"},
   [
     {page: start, title: "test" }
   ]
)

但是服务器挂断了,并且永远不会到达 jlog("db query done") 行。我心甘情愿地拼错了“兔子”。我应该怎么做?

谢谢

4

1 回答 1

0

确实,您的示例失败了,我有一个“匹配失败 8859742”异常,您没看到吗?

但不要使用?/myDataBase/data[B == "rabit"](它应该在编译时被拒绝 - 发送错误报告)但/myDataBase/data[B == "rabit"]它是一个 DbSet。原因是当您不使用主键时,您可以有多个值作为回报,即一组值。

您可以使用 DbSet.iterator 将 dbset 转换为 iter。然后用 Iter 操作它:http: //doc.opalang.org/module/stdlib.core.iter/Iter

于 2012-08-26T20:03:16.593 回答