Ionic framework 数据库中的自动增量_id
我在PockDB中实现了一个队列,其中每个记录都存储为一个单独的文档。每个记录类似于post请求,因此当用户脱机时,我可以将请求保存在队列中,然后在用户联机时将其推送到服务器。所有请求都必须按照生成它们的相同顺序进行处理。但问题是在邮袋数据库中没有_id序列。因此,每次生成一个随机id,序列就会丢失。我可以做什么来获取与保存在数据库中的记录顺序相同的记录。我正在使用PockDB和IonicFramework。 谢谢。来自@fiatjaf: 在数据库中不可能(或不是最佳)有自动递增Ionic framework 数据库中的自动增量_id,ionic-framework,pouchdb,nosql,Ionic Framework,Pouchdb,Nosql,我在PockDB中实现了一个队列,其中每个记录都存储为一个单独的文档。每个记录类似于post请求,因此当用户脱机时,我可以将请求保存在队列中,然后在用户联机时将其推送到服务器。所有请求都必须按照生成它们的相同顺序进行处理。但问题是在邮袋数据库中没有_id序列。因此,每次生成一个随机id,序列就会丢失。我可以做什么来获取与保存在数据库中的记录顺序相同的记录。我正在使用PockDB和IonicFramework。 谢谢。来自@fiatjaf: 在数据库中不可能(或不是最佳)有自动递增\u id 但是
\u id
但是,您可以选择使用时间戳,因为自动递增是不可能的。然而,这就是我所做的 假设您正在发布表单中的内容。 你是这样收到的
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);
结果行将为您获取所有文档,但我们已按降序对其进行排序,并将其限制为一个。你有一个目标,所以我们把它分了。默认情况下,Pocket将返回一个字符串,因此我们将对其进行解析,并对引号进行切片。然后我们必须加+1来增加它。然后邮袋将不接受数字,所以您必须再次将其转换为字符串(phew``)/您完成了
是的,这不是一个好办法,但与光照速度的邮袋。我想我们可以忽略它
还有一条路。
你也可以打电话给
db.info().then(info=> console.log(info.doc_count))
上述方法速度更快,并将为您节省大量开销,但您需要使用[object object]和[object Promise]进行定向。我相信这个承诺会引起人们的注意
祝你一切顺利 它是自动生成的
db.post(doc, [options], [callback])
创建一个新文档并让PockDB自动为其生成一个_id
为什么不使用时间戳作为
\u id
?我试过了。它很好用。Thanks@fiatjaf你应该在回答中提到同样的问题(出于社区目的),我不这么认为。这不是一个“规范”的答案。它不适合每个人的用例,这就是为什么我问。简短而绝对正确的答案是:在数据库中不可能有自动增量\u id
。