使用nano插入用户时,CouchDB会抛出“404丢失”错误

看来CouchDB在尝试插入用户时会随机抛出一个错误。

以下是CouchDB的完整回应:

{ [Error: missing] name: 'Error', scope: 'couch', status_code: 404, 'status-code': 404, request: { method: 'POST', headers: { 'content-type': 'application/json', accept: 'application/json', 'X-CouchDB-WWW-Authenticate': 'Cookie', cookie: [Object] }, uri: 'http://127.0.0.1:5984/_users', body: '{"_id":"org.couchdb.user:fake_user","name":"fake_user","realname":"fake user","institution":"366a8e5ba861bdd9cad5cd318a002ee4","email":"fake_user@gmail.com","phone":"123-456-7890","type":"user","roles":[],"password":"123456","level":"user","unconfirmed":"true"}', jar: false }, headers: { date: 'Tue, 21 Jan 2014 20:32:23 GMT', 'content-type': 'application/json', 'cache-control': 'must-revalidate', 'status-code': 404, uri: 'http://127.0.0.1:5984/_users' }, errid: 'non_200', error: 'not_found', reason: 'missing', description: 'missing', stacktrace: [ 'Error: missing', ' at Request._callback (/apps/arcapp/node_modules/nano/nano.js:304:39)', ' at Request.self.callback (/apps/arcapp/node_modules/nano/node_modules/request/request.js:129:22)', ' at Request.EventEmitter.emit (events.js:98:17)', ' at Request.<anonymous> (/apps/arcapp/node_modules/nano/node_modules/request/request.js:873:14)', ' at Request.EventEmitter.emit (events.js:117:20)', ' at IncomingMessage.<anonymous> (/apps/arcapp/node_modules/nano/node_modules/request/request.js:824:12)', ' at IncomingMessage.EventEmitter.emit (events.js:117:20)', ' at _stream_readable.js:872:14', ' at process._tickCallback (node.js:415:13)' ] } 

这显然不是很有见地。 我得到的是error: not_found, reason: missing ,这并没有告诉我很多。 它只是有时会发生,我不知道是什么触发它。 任何深入了解这一点非常感谢。

编辑 :这是相关的代码。 我正在使用nano ,但这只是对CouchDB的基本发布请求。

 var user = { "_id": "org.couchdb.user:" + username, "name": username, "realname": first + " " + last, "institution": institution, "email": email, "phone": phone, "type": "user", "roles": [], "password": password, "level": "user", "unconfirmed": "true", "verificationCode": verificationCode }; nano.request({ db: '_users', method: 'POST', body: user }, function(err, body) { if(err) { console.log("ERROR INSERTING USER"); console.log(err); res.send(err.status_code + " " + err.reason, err.status_code); return; } ... 

这里的问题是,我用来validation用户的cookie在注销后没有正确设置。 因此,如果您注销并立即尝试注册,数据库将以login用户身份validation请求。 由于只有数据库pipe理员被允许访问_users数据库,CouchDB会抛出一个“404失踪”的错误。

我在login时设置了nano.config.cookie ,所以当我在注销时取消设置,它就起作用了!

这个错误响了一个钟,但不幸的是我不是100%如何/如果我修好了。

有一件事,我注意到你是包括“angular色:[]”我不认为这是允许的,除非你的职位作为pipe理员。

我没有足够的代表评论,但你可以发送请求的代码?