2012-08-26 51 views
0

我想知道一個記錄是否存在於數據庫中,使用與關鍵字段不同的字段。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查詢做」)。我不情願地「拼命」拼錯。我應該做什麼?

感謝

回答

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

相關問題