我在pouchDB中实现了一个队列,其中每个记录都存储为一个单独的文档。每条记录都类似于一个帖子请求,因此当用户离线时,我可以将请求保存在队列中,然后在用户上线后立即将其推送到服务器。必须按照生成的顺序处理所有请求。但问题是囊db中没有_id序列。因此,每次生成随机id并且序列丢失。如何以与保存在数据库中相同的顺序获取记录。我正在使用pouchDB和IonicFramework。 感谢。
答案 0 :(得分:1)
来自@fiatjaf:
在PouchDB中不可能(或不是最佳)自动递增_id
但是,您可以选择使用时间戳作为_id
。
答案 1 :(得分:0)
自动递增是不可能的。但是,这就是我所做的。
让我们说您正在从表单中发布内容。 您会收到这样的消息
const fromform = req.body.fieldname;
然后在添加此代码并增加_id之前,可以调用alldocs方法。
database.allDocs({include_docs: true,descending: true,limit:1}).then(function(result){
// the rest of the code goes here
});
然后,您可以使用结果进行迭代并在其中添加数字
result.rows.map(function(item) {
var pusher=JSON.stringify(item.id, null, 4);
var idf=parseInt(pusher.slice(1,-1),10)
var addidf=idf+1;
var sid=addidf.toString();
doc = {
_id : sid,
name: 'field_from_form',
tagline : fromform // this is also field from form
}
database.put(doc, function(err, response) {
if (err) {
return console.log(err);
} else {
console.log("Document created Successfully");
res.send("Collection Updated" + JSON.stringify(doc));
}
console.log("The new array in add tag is pushed is : "+addidf);
});
});
}, function(error) {
res.status(400).send(error);
结果行将为您提供所有文档,但是我们已按降序对其进行排序并将其限制为一个。您有一个对象,因此我们对其进行了分类。默认情况下,pouch将返回一个字符串,以便我们解析它并对引号进行切片。然后,我们必须添加+1以使其递增。然后小袋将不接受数字,因此您必须再次将其转换为字符串(phew``)/完成。
是的,这不是一个好方法,但是可以加快袋子的照明速度。我想我们可以忽略它。
还有另一种方式。 您还可以致电
db.info().then(info=> console.log(info.doc_count))
上述方法速度更快,可以节省很多开销,但是您需要在[object Object]和[object Promise]方面有所了解。我敢保证诺言会引起人们的注意。
一切顺利!
答案 2 :(得分:0)
Pouchdb 帖子
自动生成
db.post(doc, [options], [callback])
创建一个新文档并让 PouchDB 为其自动生成一个 _id。