我想知道数据库中是否存在记录,使用的字段与关键字段不同。
我尝试了以下代码:
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”。我应该怎么做?
由于
答案 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
操纵它