我使用Pouchdb从用户数据创建数据库,我想用修改后的对象更新文档。例如,我有这个初始对象:
然后我修改它:
我想用新文档替换旧文档。我尝试了以下步骤:
1. 初始化PouchDB和文档
2/ 将初始文件放入数据库中
3/ 修改文档
尝试使用新文档更新数据库。
但是数据库中的文档没有被修改。
我该如何使用修改后的对象更新文档?
更新:
即使使用了_rev,我也无法使更新工作。正如mauritslamers建议的那样,我尝试在文档中包含_rev:
在下面这个
但它没用。
var doc = {
"_id": "test",
"trial": 0,
"results": [11, 22, 33]
};
然后我修改它:
doc.results[doc.results.length] = 44;
我想用新文档替换旧文档。我尝试了以下步骤:
1. 初始化PouchDB和文档
var db = new PouchDB('test');
var doc = {
"_id": "test",
"trial": 0,
"results": [11, 22, 33]
};
2/ 将初始文件放入数据库中
db.put(doc);
3/ 修改文档
doc.results[doc.results.length] = 44;
尝试使用新文档更新数据库。
db.get('test').then(function(doc) {
return db.put(doc);
}).then(function () {
return db.get('test');
}).then(function (doc) {
console.log(doc);
});
但是数据库中的文档没有被修改。
我该如何使用修改后的对象更新文档?
更新:
即使使用了_rev,我也无法使更新工作。正如mauritslamers建议的那样,我尝试在文档中包含_rev:
var db = new PouchDB('test');
var doc = {
"_id": "test",
"_rev": 0,
"trial": 0,
"results": [11, 22, 33]
};
在下面这个
put
语句中:db.get('test').then(function(doc) {
return db.put(doc, doc._rev);
}).then(function () {
return db.get('test');
}).then(function (doc) {
console.log(doc);
});
但它没用。
_rev
设置为0
。您不应该尝试自己设置_rev
;当您第一次插入文档时,数据库会为您生成它。如果您遇到困难,我建议您查看指南;它们有实时示例,您可以跟着学习。 :) http://pouchdb.com/guides/ - nlawson_rev
(参见问题的第一部分),但它并没有起作用。我按照指南示例进行操作,但我只发现在get
语句中进行更新的情况(更改小猫手套的年龄 :) 并且它可以工作),而没有涉及文档本身的更新案例。 - hhhput(doc1)
时,不应再次使用doc1
对象,因为它将不会带有_rev
成员。您需要get()
以获取新的doc2
对象。这就是为什么所有示例都要求您进行put()
然后进行get()
。例如,此页面描述了如何更新文档:http://pouchdb.com/guides/documents.html - nlawson