2017-12-28 66 views
7

'_users'라는 간단한 db를 만들고 Couch-DB를 사용하여 새 사용자를 삽입하려고합니다.couchdb 데이터베이스에 삽입 한 후 문서를 찾을 수 없거나 누락되었습니다.

나는 다음과 같은 코드를 실행하는 쉘에서 노드를 사용하고이를 실행 한 후

UserProfile.js

var nano = require('nano')('http://localhost:5984')   
module.exports = { 
    addUser: function(id, name, password){     
     var usersDB = nano.use('_users') 
     var options = { 
      "_id": "org.couchdb.user:"+id, 
      "name": id, 
      "roles": [],    
      "type": "user", 
      "password": password 
     } 
     usersDB.insert(options, function(err, body, header) { 
      console.log('insert is being called') 
      if (err) { 
       console.log(err.message); 
       return; 
      }    
      console.log(body); 
     }); 

    } 
}; 

노드 REPL

> var nano = require('nano')('http://localhost:5984') 
undefined 
> var usersdb = nano.db.destroy('_users') 
undefined 
> var usersdb = nano.db.create('_users') 
undefined 
> var profile = require('./UserProfile.js') 
undefined 
> profile.addUser('cheese', 'flubber', 'goat') 
undefined 
> insert is being called 
> OS process timed out. 

을, 나는 볼 것으로 예상 입력은 /_users/cheese이지만 항목이 없습니다. 내가 뭔가 잘못하고 있니?

+0

1. 예상되는 항목은 /_users/org.couchdb.user:cheese이어야합니다. 2. usersDB.insert 콜백의 응답은 무엇입니까? –

+0

@ AlexisCôté'/_users/org.couchdb.user : cheese'에 갈 때'{ "error": "not_found", "reason": "missing"}'이 보입니다. 콜백의 응답이 없습니다. 위의 셸에서 볼 수 있듯이 단순히 정의되지 않은 값을 반환합니다. –

+0

'nano.db.destroy'와'nano.db.create' 함수는 콜백을 사용합니다 - API 호출은 다음 호출로 이동하기 전에 해결 되었습니까? – tephyr

답변

1

사용자를 만들 때 _id는 org.couchdb.user:name과 같아야합니다.

귀하의 경우 다른 이름의 사용자 치즈를 만들 수 있습니다.

오류 콜백을 확인할 수도 있습니다. 오류 메시지가 Couch에서 반환되어야합니다. 삭제하고 데이터베이스를 만들 때

또한

, 당신은 콜백을 사용해야합니다.

_users를 만들 때 _users 데이터베이스를 만들지 않았더라도 직접 사용자를 만들 수 있습니다.

+0

나는 이제'org : couchdb.user : name'과 같은 값 ('id')을 가진'name'을 가지고 있음을 보여주기 위해 나의 질문을 업데이트했다. 또한 콜백이 호출하지 못하기 때문에 오류 콜백을 확인할 수 없습니다. 난 그냥'undefined'를 반환합니다. –

+0

@DavidJ. 내 대답을 업데이트했습니다. –