उदाहरण समारोह in-place
"यथा-स्थान" अन्य डेटाबेस में अद्यतन के रूप में ही नहीं है। कॉच डीबी अभी भी एक संलग्न-केवल वास्तुकला का उपयोग करता है; दस्तावेज़ अद्यतन हैंडलर अभी भी एक नया दस्तावेज़ संशोधन, आदि
फिर भी, हैंडलर अपडेट करना काफी सुविधाजनक और सीखने योग्य है।
मान लें कि आपके पास एक संचयक वाला दस्तावेज़ है। आप किसी दस्तावेज़ में केवल एक HTTP क्वेरी के साथ एक पूर्णांक जमा करना चाहते हैं, amount
पैरामीटर का उपयोग करके वृद्धि राशि निर्दिष्ट करना। निम्न कमांड पर विचार करें:
curl -X PUT http://localhost:5984/db
# Returns {"ok":true}
curl -H "Content-Type:application/json" -X POST http://localhost:5984/db/_bulk_docs -d @-
{"docs":
[
{"_id": "my_doc", "number": 23},
{"_id": "_design/app",
"updates": {
"accumulate": "function (doc, req) {
var inc_amount = parseInt(req.query.amount);
doc.number = doc.number + inc_amount;
return [doc, \"I incremented \" +
doc._id + \" by \" +
inc_amount];
}"
}
}
]
}
# Returns [{"id":"my_doc","rev":"1-8c9c19a45a7e2dac735005bbe301eb15"},
# {"id":"_design/app","rev":"1-83ec85978d1ed32ee741ce767c83d06e"}]
(प्रेस करने के अंत फ़ाइल,^डी, पोस्ट में JSON ऑब्जेक्ट के बाद याद रखें।)
अगला संचय के लिए दस्तावेज़ की पुष्टि (my_doc
) मौजूद है:
curl http://localhost:5984/db/my_doc
# Returns {"_id":"my_doc","_rev":"1-8c9c19a45a7e2dac735005bbe301eb15",
# "number":23}
अब आप एक amount
पैरामीटर अद्यतन करने के लिए क्षेत्र के साथ accumulate
अद्यतन हैंडलर कॉल कर सकते हैं।
curl -X PUT \
http://localhost:5984/db/_design/app/_update/accumulate/my_doc?amount=15
# Returns: I incremented my_doc by 15
curl http://localhost:5984/db/my_doc
# Returns {"_id":"my_doc","_rev":"2-<whatever>",
# "number":38}
सूचना है कि नए number
मूल्य 38 है, 23 + 15.
हालांकि अपडेट पर _rev मान वृद्धि। –
वूप्स, फिक्स्ड। धन्यवाद। – JasonSmith