添加文档时,PouchDB 409冲突
PouchDB 409 conflict when adding doc.
在添加新文档时,我与pouchDB发生了奇怪的冲突。在创建新文档后不久创建新文档时,会出现冲突。然而,如果我等待5分钟左右,冲突就不再发生了。我对解决这个问题很感兴趣。
我正在使用带节点的express。下面是我添加项目的方法。它被用于路由器(见下文)
//require stuff
...
//require pouch
var PouchDB = require('pouchdb');
//db setup
var db = new PouchDB('http://127.0.0.1:5984/db');
module.exports = {
addItem: (req, res, next) => {
//check body fields with express validator
req.checkBody('firstname', "Invalid, please enter firstname").notEmpty();
req.checkBody('lastname', "Invalid, please enter lastname").notEmpty();
req.checkBody('address', "Invalid, please enter address").notEmpty();
var phonenumber = req.body.phonenumber; //phone number is optional dont use express validator
var errors = req.validationErrors();
if (errors) {
res.render('add', {
errors: errors
});
}
var newDoc = {
_id: date.toString() ,
firstname: req.body.firstname,
lastname: req.body.lastname,
address: req.body.address,
phonenumber: phonenumber,
dateAdded: moment(date).format("dddd, MMMM Do YYYY, h:mm:ss a")
}
db.put(
newDoc
).then(function (response) {
res.redirect('/feed');
}).catch(function (err) {
if (err){
return next(err);
}
});
},
...
//more methods
}
...
//export module
路由器添加
//require all the stuff
//post new item route
router.route('/feed/add').post(ActionController.addItem);
我使用了packdb -upsert来修复这个问题。https://github.com/pouchdb/upsert
并使用了puIfNotExists方法
...
//save item to array and db
db.putIfNotExists({
_id: date.toString(),
firstname: req.body.firstname,
lastname: req.body.lastname,
address: req.body.address,
phonenumber: phonenumber,
dateAdded: moment(date).format("dddd, MMMM Do YYYY, h:mm:ss a")
}).then(function () {
return res.redirect('/feed');
}).catch(function (err) {
if (err) {
return next(err);
}
})
...
相关文章:
- Javascript-ID冲突的几率
- 导致内容安全策略(CSP)冲突错误的本地jquery.js文件
- 如何从PouchDB导入/导出数据库
- Pg承诺性能提升:在冲突中
- 数据与Javascript中的继承冲突
- Angular ng控制器与ng应用程序冲突
- 返回按钮代码段的Jquery冲突
- 调试一个简单的jQuery函数;想知道是否与其他代码冲突
- 使用JavaScript和HTML5画布进行冲突检测
- javascript对象原型与jquery冲突
- jQuery与导航菜单上的mouseover事件冲突.
- 有关PouchDB的复杂startkey/endkey查询未返回预期结果
- Javascript滑块不滑动,如何判断是否存在JS冲突
- Bing语音和Bing地图在Windows 8应用商店应用程序中冲突
- 当我们保存一些附件时,我们如何提高PouchDB的性能
- PouchDB,如何在已经有附件的文档中添加新附件
- Javascript两个日期选择器冲突
- Sequelize:属性之间的命名冲突'播放列表'以及关联'播放列表'
- 2D Processingjs游戏中的冲突
- 添加文档时,PouchDB 409冲突