2014-01-21 2 views
1

사용자 삽입시 CouchDB에서 임의로 오류가 발생합니다.nano를 사용하여 사용자를 삽입 할 때 CouchDB에서 '404 missing'오류가 발생합니다.

{ [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":"[email protected]","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)' ] } 

이것은 분명히 매우 통찰력이되지 않습니다 :

여기 CouchDB를에서 전체 응답이다. 내가 얻는 것은 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; 
    } 

... 

답변

1

여기 사용자가 유효성을 검사하기 위해 사용하고있는 쿠키가 로그 아웃 후에 제대로 설정되지 않았 음이 문제였습니다. 따라서 로그 아웃 한 후 즉시 등록하려고 시도하면 데이터베이스는 로그인 한 사용자로 요청을 인증합니다. DB 관리자 만이 _users db에 액세스 할 수 있으므로 CouchDB는 '404 누락'오류를 발생시킵니다.

로그인 할 때 nano.config.cookie을 설정 했으므로 로그 아웃 할 때 설정을 해제하면 효과가있었습니다.

0

이 오류는 종소리가 들리지만 불행히도 저는 100 % 방법이 아니며/고칠 수는 없습니다.

내가 한 일은 당신이 "역할 : []"을 포함한다는 것을 알았습니다. 나는 관리자로서의 귀하의 게시물이 아닌 이상 허용되지 않는다고 생각합니다.

의견을 말할 담당자가 충분하지 않지만 요청하는 코드를 보낼 수 있습니까?

+0

관리자가 아닌 이상 역할을 설정할 수 없지만 최소한 빈 역할 배열을 게시해야한다고 생각합니다. 나는 나중에 기회가있을 때 코드로 업데이트 할 것이다. –

+0

관련 코드를 추가했습니다. –

관련 문제