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

Database opa数据库:如何知道数据库中是否存在值?,database,opa,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")

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

我尝试了以下代码:

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(“启动数据库查询”)
myType d1={A:“兔子”,B:“小马”};
/myDataBase/data[A==d1.A]=d1
jlog(“数据库写入完成”)
选项opt=?/myDataBase/data[B==“rabit”]
jlog(“数据库查询完成”)
匹配(可选)
{
案例{none}:数据库中无任何内容
数据库中的案例{some:data}:{data}
}
}
Server.start(
{端口:8092,网络掩码:0.0.0.0,加密:{no_encryption},名称:“test”},
[
{第页:开始,标题:“测试”}
]
)
但是服务器挂断了,永远无法到达jlog行(“db query done”)。我心甘情愿地错叫了“拉比特”。我该怎么办


谢谢

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

但是不要使用
?/myDataBase/data[B==“rabit”]
(编译时应该被拒绝-错误报告已发送),而是使用作为数据库集的
/myDataBase/data[B==“rabit”]
。原因是当您不使用主键时,您可以返回多个值,即一组值

您可以使用dbset.iterator将dbset转换为iter。然后用Iter对其进行操作: