2013-08-24 66 views
1

我有一個查詢問題我想不通,我在做這個查詢代碼:Ravendb 2.5:查詢得到0的結果,而應該是1

var userList = (from user in this.documentSession.Query<User>() 
          where user.FederatedUserIds[authenticatedClient.ProviderName] == authenticatedClient.UserInformation.Id 
          select user).ToList(); 

在這種情況下, providername是Facebook,id = 100001103765630. FederatedUserId是一個字典。

導致此查詢到服務器:

http://localhost:8080/indexes/dynamic/Users?&query=FederatedUserIds.facebook%3A100001103765630&pageSize=128 

其中給出零分的結果,也從web瀏覽器的查詢:

{ 
    "Results": [], 
    "Includes": [], 
    "IsStale": false, 
    "IndexTimestamp": "2013-08-24T14:52:44.0511623Z", 
    "TotalResults": 0, 
    "SkippedResults": 0, 
    "IndexName": "Auto/Users/ByFederatedUserIds_facebook", 
    "IndexEtag": "01000000-0000-0064-0000-000000000001", 
    "ResultEtag": "2BD9AA1E-935A-FEDF-3636-FAB0F155ED9E", 
    "Highlightings": {}, 
    "NonAuthoritativeInformation": false, 
    "LastQueryTime": "2013-08-24T15:00:30.1200358Z", 
    "DurationMilliseconds": 1 
} 

雖然我有一個文件,就是這樣的數據庫,所以我期望1結果,而不是0:

{ 
    "DisplayName": "neographikal", 
    "RealName": "x", 
    "Email": "x", 
    "PictureUri": "x", 
    "Roles": [ 
    "User" 
    ], 
    "ProfileImages": [], 
    "FederatedUserIds": { 
    "google": "x", 
    "twitter": "x", 
    "windowslive": "x", 
    "linkedin": "x", 
    "facebook": "100001103765630" 
    } 
} 

奇怪的是,這有這段代碼之前從來沒有打擾過我。有人可以看到我在做什麼錯嗎?

回答

1

不知何故,這與索引有關。雖然它是一個自動索引查詢,但刪除服務器上的所有索引並重新啓動應用程序可解決此問題。我認爲這不應該發生,但複製它似乎非常困難。如果我可以在該功能中重現它,我會嘗試進一步調查。

編輯01-09:

發現問題,並創建了一個錯誤報告:http://issues.hibernatingrhinos.com/issue/RavenDB-1334

通過創建一個像樣的指數圍繞它的工作:

public class UserByFederatedLoginIndex : AbstractIndexCreationTask<Core.Domain.User> 
    { 
     public UserByFederatedLoginIndex() 
     { 
      Map = users => from u in users 
          select new 
           { 
            u.DisplayName, 
            _ = u.FederatedUserIds.Select(x => CreateField("FederatedUserIds_"+x.Key, x.Value)) 
           }; 
     } 
+0

確實看起來很奇怪。如果您發現其他問題,請告訴我們。 –

+0

它又發生在我身上。刪除索引並重新啓動應用程序修復了它。仍然無法弄清楚它爲什麼會發生。 – neographikal

1

我剛纔說你可能會有陳舊的結果,但我看到那"IsStale": false

我看到的唯一的另一件事是,對URL的查詢通過FederatedUserIds.facebook而索引中的字段名將是FederatedUserIds_facebook。但是,我測試了它並且它工作正常,所以看起來在查詢執行之前.被轉換爲_。我不確定何時添加或者一直如此。

請注意,如果您嘗試使用Raven Studio中的.進行查詢,那麼它在那裏不起作用,但_會這樣。

你正在運行什麼版本的版本?我在2.5.2666上測試過,它對我很有用。

+0

我還運行建立2666,最新的穩定。我也嘗試了最新的2.0版本,同樣的問題。奇怪的是,有時它確實有效。我無法複製,當它失敗時,是正確的。它似乎不是一個陳舊的索引問題。爲了完全確定我已經修改了查詢,以便它等待陳舊的索引,但是這並沒有解決問題。 – neographikal

相關問題