2012-06-05 49 views
1

我遇到了兩個與Derby和Mongo有關的問題。我來自MySQL和Redis的背景,所以也許我只是做錯了什麼?來自MongoDB的結果

1)看來我無法搜索一個Id類型爲ObjectId的Id。

model.query("users").byKey(params.userId); 

將只匹配其_id是一個字符串..這我想會好起來的記錄,該數據被「更新」時,除了賽車將創建具有的ObjectId _id的新紀錄!所以基本上我無法通過我用Racer插入的id檢索文檔!

2)每次我做一個查詢我回來的對象,如的對象:

{ '$spec': true, 
    '4fcd4c8e6c8c89d97ed90f4a': { "username": ... }, 
    '4fcd4c8e6c8c89d97ed90f4b': { "username": ... }, 

這意味着我必須把它轉換成對象的列表。我寫了一個函數來創建一個_id列表,然後將它分配給一個模型變量,以便與refList一起使用。感覺就像這樣一個黑客,這不可能是正確的做法。

+0

你在derbyjs谷歌組中也問過嗎? https://groups.google.com/forum/?fromgroups#!forum/derbyjs – studgeek

回答

2

查詢只是基本0.3.11版本更新。現在,模型已經內置了model.filter()和model.sort()方法,它們將取代手動構建鍵列表以及向Derby發出更高效的數組更新事件的需求。請致電Queries README

0

我不是一個derbyjs用戶,但這裏有一些建議,關於你的問題:

1)關於 「ID爲的ObjectId」?

看來,ID必須是一個對象,見DerbyDoc/Persistance

賽車路徑轉換成使用自然映射數據庫收集和文件: collection.documentId.document

...

//在根路徑上的第一和第二片段必須是對象

你如何保存你的數據?作爲一般性建議,完整可重複的代碼可以改善您可以獲得的幫助。

2)「我需要將查詢結果轉換爲列表」?

從我與其他引擎的經驗來看,確實看起來你並沒有採用正確的方法。所有這些都取決於你想要對結果做什麼,但是一種非常常見的方法是使用對象列表並最終在模板循環中獲取屬性。在你的情況下,這意味着將查詢結果直接傳遞給page.render調用。見DerbyDoc/sections

希望這有助於

亞歷克西斯

+0

在#1上,我認爲你引用了一些不同的東西,那就是已經建立的模型路徑。問題是,當我傳遞一個「id」給model.query時,它看起來和db.users.find({「_ id」:「12345」})相對應,相當於db.users.find({「_ id」:新的ObjectId(「12345」)})。 –

+0

至於#2,流星(一個類似的框架)接受對象的對象很像我期望德比的行爲。例如,在KnockoutJS中,有必要將對象轉換爲對象列表,然後才能在模板中循環訪問對象,但我希望有經驗的人員能夠提供正確方式的示例(如果有是這樣做的)。 –

+0

好的,正如我所說我並不是真正的derbyjs用戶,所以我希望你能得到你的答案(儘管這裏似乎沒有這麼多的derbyjs追隨者) – Alexis