2017-08-04 149 views
1

我試圖對我創建的PouchDB索引執行$ gte查詢。查詢不會出錯,但當應該有與該子句匹配的文檔時返回空數組。這個想法是讓所有的文檔都有最近30天的時間戳。存儲該值的屬性不在頂層,它屬於meta屬性的一部分。例如。Pouchdb-從過去30天查找文檔

{ 
    _id: "76e7f205-b8c3-4cc6-abfb-77c98ca3a0d4", 
    _rev: "1-47f49534aa364f5c654b9574fa085005", 
    ... 
    meta: { 
     created: 1501841768486 
     createdBy: "[email protected]" 
    } 
} 

創建我的指數成功地利用了以下內容:

let thirtyDaysAgo = moment(Date.now()).subtract(30, 'days').format('x'); 

//selector: { 'meta.created': { $gte: thirtyDaysAgo } }, 

return recordingsDB.find({ 
    selector: { meta: { created: { $gte: thirtyDaysAgo } } }, 
    sort: [{'meta.created': 'desc'}], 
    use_index: 'recent' 
}).catch(function (err) { 
    console.log(err); 
}); 

我試圖查詢子屬性既不工作都語法風格:

recordingsDB.createIndex({ 
    name: 'recent', 
    ddoc: 'recent', 
    index: { 
     fields: ['meta.created'] 
    } 
}); 

我然後使用查詢它。該查詢實際上不會失敗或導致任何錯誤 - 當我知道有文檔應該匹配該查詢時,它只返回一個空數組。

回答

1

您需要將thirtyDaysAgo換成​​,因爲它是一個字符串,而您創建的日期是一個數字。類型差異對pouchdb-find很重要,因爲它使用與couchdb相同的基礎索引標準,並且它們的類型基於collation order

+0

我不敢相信我沒有發現!謝謝 – Mark

相關問題