[英]CouchDB Document Map Modification
我是CouchDd的新手,所以我可能錯過了文檔中的內容。
我想創建一個將刪除doc成員的map函數。 注意:我不想實際更改存儲的文檔只返回結果。
我創建了這張地圖。
function(doc) {
for(i = 0; i < doc.Videos.length; i++)
{
delete doc.Videos[i].VideoFrames;
}
emit(doc.DeviceId, doc);
}
我想從CouchDb返回的文檔中刪除VideoFrames。
當我運行此地圖時,VideoFrame仍然在返回的文檔中。 我在JSFiddle中使用示例數據運行此映射,它可以正常工作,但是,在couchDB中它不是。
示例文檔
{
"_id": "2e06de647c59fc94524c2f90b7001157",
"_rev": "1-cb05705a122918c2c53dfb1e01ebed02",
"TimeStamp": 1397343510,
"DeviceId": "74a5f7aa9d4dfd0d",
"Videos": [
{
"TimeStamp": 1397343518798,
"VideoFrames": [
{
"TimeStamp": 1397343519515,
"JPEG_Base64Frame": "iVBORw0KGgoAAAANSUh...==\n"
}
]
}
],
"GeoLocations": [
{
"TimeStamp": 1397343512,
"Latitude": 41.5654724,
"Longitude": -87.5268132
}
]
}
CouchDB密封doc
對象,因為它已經被傳遞,因為在視圖索引更新時考慮了同一設計文檔中的所有map函數。 如果要修改它並發出結果,則應首先創建其副本並修改該副本而不是原始doc
對象。
我誤解了這個問題。 似乎op只想從最終結果中刪除視頻幀。 這是你如何做到這一點
function(doc) {
var newDoc = doc;
for(i = 0; i < newDoc.Videos.length; i++)
{
delete newDoc.Videos[i].VideoFrames;
}
emit(doc.DeviceId, newDoc);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.