2017-12-28 226 views
7

'_users' adlı basit bir db oluşturmaya çalışıyorum ve buna Couch-DB kullanarak yeni bir kullanıcı ekliyorum.Doc, couchdb veritabanına eklendikten sonra bulunamadı/eksik

Aşağıdaki kod çalıştırmasına kabuğunda Düğüm kullanıyorum: Bu çalıştırdıktan sonra

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

    } 
}; 

düğüm 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. 

, bir görmeyi beklediğiniz /_users/cheese numaralı girdi, ancak giriş yok. Yanlış bir şey mi yapıyorum?

+0

1. Beklenen girdi şu şekilde olmalıdır: /_users/org.couchdb.user:cheese 2. KullanıcılarDB.insert geri çağrısından gelen yanıt nedir? –

+0

@ AlexisCôté /_users/org.couchdb.user adresine gittiğimde: "ben" {"error": "not_found", "reason": "missing"}. Geri aramadan bir cevap yok; Yukardaki kabuğumda gördüğünüz gibi, undefined değerini döndürür. –

+0

'nano.db.destroy' ve' nano.db.create' işlevleri, geri aramaları kullanır - API, sonraki çağrıya geçmeden önce çözdü mü? – tephyr

cevap

1

Bir kullanıcı oluşturduğunuzda _id şu şekilde olmalıdır: org.couchdb.user:name.

Sizin durumunuzda, farklı bir ada sahip bir kullanıcı peynir oluşturursunuz.

Ayrıca, hata iletinizi kontrol etmek isteyebilirsiniz. Bir hata mesajı Couch'den döndürülmelidir. Silmek ve veritabanı oluşturduğunuzda

Ayrıca

, sen geri arama kullanmak zorunda.

_users oluşturduğunuzda, _users veritabanının oluşturulmadığı onaylanmasa bile bir kullanıcı oluşturursunuz.

+0

Sorgum, şimdi "org: couchdb.user: name" ve "name" kelimelerinin aynı değerlere ('id') sahip olduğunu göstermek için güncelledim. Ayrıca, geri çağırma işlemi başarısız olduğu için hata geri bildirimini kontrol edemiyorum. Ben sadece 'undefined' geri döndüm. –

+0

@DavidJ. Cevabımı güncelledim –