opa数据库:如何知道数据库中是否存在值?

时间:2012-08-26 17:33:45

标签: database opa

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

我尝试了以下代码:

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”)。我心甘情愿地误解了“rabit”。我应该怎么做?

由于

1 个答案:

答案 0 :(得分: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

操纵它