2017-12-28 209 views
7

Próbuję utworzyć prostą bazę danych zwaną "_users" i wstawić do niej nowego użytkownika za pomocą Couch-DB.Nie znaleziono dokumentu/nie ma go po wstawieniu do bazy danych couchdb

używam węzła w skorupkach uruchomić następujący kod:

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); 
     }); 

    } 
}; 

węzeł 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. 

Po uruchomieniu tego spodziewam się zobaczyć wpis na /_users/cheese, ale nie istnieje wpis. Czy robię coś niepoprawnie?

+0

1. Oczekiwanym wpisem powinien być /_users/org.couchdb.user:cheese 2. Jaka jest odpowiedź wywołania zwrotnego usersDB.insert? –

+0

@ AlexisCôté Kiedy przechodzę do '/_users/org.couchdb.user: cheese', widzę' {"error": "not_found", "reason": "missing"} '. Nie ma odpowiedzi od wywołania zwrotnego; jak widać w powyższej skorupie, po prostu wraca undefined. –

+0

Funkcje 'nano.db.destroy' i' nano.db.create' używają wywołań zwrotnych - czy wywołania API zostały rozwiązane przed przejściem do następnego połączenia? – tephyr

Odpowiedz

1

podczas tworzenia użytkownika, _id musi wyglądać tak: org.couchdb.user:name.

W twoim przypadku utworzysz sera użytkownika o innej nazwie.

Możesz również sprawdzić swój komunikat zwrotny błędu. Z kanapy powinien zostać zwrócony komunikat o błędzie.

także

Kiedy usunąć i utworzyć bazę danych, trzeba użyć wywołania zwrotnego.

Po utworzeniu _users tworzy się użytkownika bezpośrednio, nawet jeśli baza danych użytkowników nie została potwierdzona.

+0

Zaktualizowałem moje pytanie, aby pokazać, że mam teraz 'org: couchdb.user: name' i' name' z tymi samymi wartościami ("id"). Ponadto nie mogę sprawdzić wywołania błędu, ponieważ wywołanie zwrotne nie może nawiązać połączenia. Właśnie zwróciłem 'undefined'. –

+0

@DavidJ. Zaktualizowałem swoją odpowiedź –