2012-07-25 9 views
5

Duplicar posibles:
Getting ' bad_request invalid_json' error when trying to insert document into CouchDB from Node.jsComenzando con Node.js y CouchDB sin bibliotecas como nano o cuna

La respuesta más alta votación en CouchDB and Node.js - What module do you recommend? recomienda no utilizar las bibliotecas, tales como nano o cuna para comenzar con Node.js y CouchDB.

Sin embargo, no he encontrado ningún tutorial sobre cómo realizar operaciones estándar para todos los DBMS, como crear bases de datos, crear tablas, agregar y ver datos, etc. programáticamente.

EDITAR: (respuesta parcial) después de instalar e iniciar CouchDB, vaya a http://localhost:5984/_utils/script/couch.js.

Respuesta

5

Usted debe comenzar por la lectura de la CouchDB book.

No tengo idea por qué no quieres usar un módulo: creo que tomaste una respuesta fuera de contexto (una respuesta que probablemente tiene un año) y tomaste la decisión de no usar un módulo.

Eso no es útil para hacer las cosas. :) Simplemente está repitiendo el trabajo realizado y los problemas resueltos, etc.

Si desea aprender CouchDB, lea el libro. Puedes leer la fuente de nano ya que se correlaciona estrechamente con la API y debe ser fácil de leer, pero el libro es el camino perfecto.

Si por alguna razón usted decide que todavía desea implementar su propio módulo para hacer lo que otros ya lo hacen así, ir a por ello :)

Si en cambio que busca recursos en el uso de nano hay un buen número :

+0

El consejo de Jason sigue siendo v alid independientemente de la edad de la respuesta. Especialmente con Node.js 'no hay una necesidad real de una biblioteca que simplemente envuelve la excelente API HTTP. –

0

CouchDB no es un motor de base de datos SQL. Está en la familia de los "NoSQL".

No hagas selecciona, no se crea tablas, etc.

Es completamente diferente.

En realidad está usando una API REST para funcionar. Al igual que para acceder a todos los documentos, puede acceder a ellos utilizando HTTP GET en la siguiente URL: http://some.server/someDbName/_all_docs

Para una introducción más completa, sugiero buscar "CouchDB tutorial" en Google.

Encontrarás buenos enlaces como this one o this one. (No estoy seguro de nada, solo se ven bien como una introducción.)

Para realizar una solicitud http en node.js, puede utilizar el método request del módulo incorporado http. Un método de acceso directo es http.get, que se puede utilizar de esta manera:

var http = require('http'); 

http.get('http://some.url/with/params', function(res) { 
    // res has the values returned 
}); 

Edición después de la lectura de su código:

En primer lugar, el documento que está utilizando si es obsoleta. El nodo está en v0.8, no en 0.4.

En segundo lugar, su request = require('request') debe dar algunos problemas (¿existe el módulo?). No creo que la primera parte se haya ejecutado.

En tercer lugar, simplemente intente una solicitud GET por el momento. Algo como:

var http = require('http'); 
http.get('http://localhost:5984/_all_dbs', function(res) { 
    console.log(res); 
}); 

Ver si está funcionando. Si es así, ya sabe cómo usar couchdb;)

Por último, su solicitud al final no parece incorrecta. Quizás esté relacionado con require('request'), así que no sé.

+0

Yo sé aproximadamente, lo que significa NoSQL, disculpa por usar un lenguaje erróneo. El enlace que sugieres no proporciona un enfoque programático, solo curl. – DSblizzard

+0

enfoque programático: hacer solicitudes HTTP. curl hace peticiones http, es lo mismo. –

+0

pero me cuesta hacer esto programáticamente durante varias horas. Espero que pronto publique mi respuesta. – DSblizzard

0

Éstos son unos pocos ejemplos prácticos, los pensamientos y de códigos fragmentos de lo que debería ayudar en su estudio

Simple Blog with Coffeescript, Express and CoudbDB

Thoughts on development using CouchDB and Nodejs

Bind CouchDB and Node.js

Getting Started with Node.js, Express and CouchDB - este enlace no parece para ser accesible ahora, pero parece un problema temporal.

Aquí está uno de los ensayos CouchDB - Mock testing CouchDB using Node.js

espero que ayude.

+0

Primer enlace: usa cuna, segundo: no es una solución, tercero: usa nano – DSblizzard

+0

Hace aproximadamente un año que estoy compilando recursos útiles en Node.js y supongo que la lista es más o menos lo que está disponible en CouchDB y Node.js – almypal

+0

almypal su lista carece de algunas. Las publicaré en una respuesta separada – dscape

2

Gracias a Ruben Verborgh, compilé un micro-tutorial de varias fuentes.

var http = require('http') 
var sys = require('sys') 


var couchdbPath = 'http://localhost:5984/' 

request = require('request') 
h = {accept: 'application/json', 'content-type': 'application/json'} 
request(
    {uri: couchdbPath + '_all_dbs', headers:h}, 
    function(err, response, body) { console.log(sys.inspect(JSON.parse(body))); } 
) 

// add database 
request(
    {uri: couchdbPath + 'dbname', method:'PUT', headers:h}, 
    function (err, response, body) { 
    if (err) 
     throw err; 
    if (response.statusCode !== 201) 
     throw new Error("Could not create database. " + body); 
    } 
) 

// Modify existing document 
var options = { 
    host: "localhost", 
    port: 5984, 
    path: "/dbname", 
    headers: {"content-type": "application/json"}, 
    method: "PUT" 
}; 

var req = http.request(options, function(res) { 
    console.log('STATUS: ' + res.statusCode); 
    //console.log('HEADERS: ' + JSON.stringify(res.headers)); 
    res.setEncoding('utf8'); 
    res.on('data', function (chunk) { 
    console.log('BODY: ' + chunk); 
    }); 
}); 

req.on('error', function(e) { 
    console.log('problem with request: ' + e.message); 
}); 

// write data to request body 
req.write(JSON.stringify({ 
    "_id":"rabbit", 
    "_rev":"4-8cee219da7e61616b7ab22c3614b9526", 
    "Subject":"I like Plankton" 
})); 

req.end(); 

utilicé siguiente documentación:

+0

He editado mi respuesta –

+0

¿Tiene que ser una respuesta o una pregunta en sí misma? –

+0

Respuesta. Es muy extraño que tal ejemplo no esté disponible en los documentos. La impresión es que no hay principiantes en CouchDB + Node.js + web-en-general – DSblizzard