| a | b | |
|---|
| 0 | + | saveDoc: function(doc, options) { |
|---|
| 0 | + | options = options || {}; |
|---|
| 0 | + | var db = this; |
|---|
| 0 | + | var beforeSend = fullCommit(options); |
|---|
| 0 | + | if (doc._id === undefined) { |
|---|
| 0 | + | var method = "POST"; |
|---|
| 0 | + | var uri = this.uri; |
|---|
| 0 | + | } else { |
|---|
| 0 | + | var method = "PUT"; |
|---|
| 0 | + | var uri = this.uri + encodeDocId(doc._id); |
|---|
| 0 | + | } |
|---|
| 0 | + | var versioned = maybeApplyVersion(doc); |
|---|
| 0 | + | $.ajax({ |
|---|
| 0 | + | type: method, url: uri + encodeOptions(options), |
|---|
| 0 | + | contentType: "application/json", |
|---|
| 0 | + | dataType: "json", data: toJSON(doc), |
|---|
| 0 | + | beforeSend : beforeSend, |
|---|
| 0 | + | complete: function(req) { |
|---|
| 0 | + | var resp = $.parseJSON(req.responseText); |
|---|
| 0 | + | if (req.status == 200 || req.status == 201 || req.status == 202) { |
|---|
| 0 | + | doc._id = resp.id; |
|---|
| 0 | + | doc._rev = resp.rev; |
|---|
| 0 | + | if (versioned) { |
|---|
| 0 | + | db.openDoc(doc._id, { |
|---|
| 0 | + | attachPrevRev : true, |
|---|
| 0 | + | success : function(d) { |
|---|
| 0 | + | doc._attachments = d._attachments; |
|---|
| 0 | + | if (options.success) options.success(resp); |
|---|
| 0 | + | } |
|---|
| 0 | + | }); |
|---|
| 0 | + | } else { |
|---|
| 0 | + | if (options.success) options.success(resp); |
|---|
| 0 | + | } |
|---|
| 0 | + | } else if (options.error) { |
|---|
| 0 | + | options.error(req.status, resp.error, resp.reason); |
|---|
| 0 | + | } else { |
|---|
| 0 | + | throw "The document could not be saved: " + resp.reason; |
|---|
| 0 | + | } |
|---|
| 0 | + | } |
|---|
| 0 | + | }); |
|---|
| 0 | + | }, |
|---|
| ... | |
|---|