neDB é um banco de dados que não necessita de instalação, trabalha no formato json e muito rapido!
Instalação
Para instalar basta ir no diretório do seu projeto e rodar o comando:
npm install nedb
Como todo modulo Node.js é instalado.
Crie um arquivo .js para começarmos a digitar nosso código node:
var nedb = require('nedb');
var db = new nedb({filename: 'banco.db', autoload: true});
Na primeira linha definimos o modulo do neDB e em seguida criamos o banco de dados usando o new, aonde o filename é o local e o nome do arquivo do banco de dados, o autoload faz o carregamento automático do banco de dados caso ele já exista no diretório definido no filename.
Vamos criar agora um CRUD
Para quem não sabe CRUD significa: Criar, Recuperar, Atualizar e Deletar ou seja vamos criar um objeto, inserir em nosso DB, depois recuperá-lo, atualizá-lo, etc.
Inserindo novo documento:
vamos criar um objeto usuário, para isso fazemos:
var usuario = {
nome: "Pedro Henrique",
idade: 18,
email: "pedro@gmail.com",
senha: 123456789
};
Para inserir usamos:
db.insert(usuario, function(err){
if(err)return console.log(err); //caso ocorrer algum erro
console.log("Novo usuário adicionado!");
});
Fácil ? Veja que se você ir no diretorio aonde definiu o banco de dados, irá aparecer o arquivo que você definiu e dentro dele estará algo parecido com isso:
{"nome":"Pedro Henrique","idade":18,"email":"pedro@gmail.com","senha":123456789,"_id":"vxJMEAMBFLmkUmKY"}
Veja que ele já atribui um _id ao nosso objeto, oque facilita bastante quando precisarmos procurar por ele para remover, atualizar etc.
Recuperando um documento:
Para recuperarmos todos os documentos pelo nome que definimos no usuário usamos:
db.find({ nome: 'Pedro Henrique' }, function (err, usuarios) {
if(err)return console.log(err);
console.log(usuarios);
});
o console ira retornar algo parecido como isto:
[ { nome: 'Pedro Henrique',
idade: 18,
email: 'pedro@gmail.com',
senha: 123456789,
_id: 'vxJMEAMBFLmkUmKY' } ]
Se quisermos procurar pela idade:
db.find({ idade: 18 }, function (err, usuarios) {
if(err)return console.log(err);
console.log(usuarios);
});
Ou e-mail:
db.find({ email: 'pedro@gmail.com' }, function (err, usuarios) {
if(err)return console.log(err);
console.log(usuarios);
});
Se você quiser procurar um único documento usamos o findOne:
db.findOne({ email: 'pedro@gmail.com' }, function (err, usuarios) {
if(err)return console.log(err);
console.log(usuarios);
});
Atualizando um documento:
Para substituir um documento inteiro usamos:
db.update({ email: 'pedro@gmail.com' }, {nome: "Carlos", email: "carlos@gmail.com"}, {}, function (err) {
if(err)return console.log(err);
console.log("Usuário atualizado");
});
o documento que antes era assim:
{"nome":"Pedro Henrique","idade":18,"email":"pedro@gmail.com","senha":123456789,"_id":"vxJMEAMBFLmkUmKY"}
passou a ficar assim:
{ "nome": "Carlos", "email": "carlos@gmail.com", "_id": "vxJMEAMBFLmkUmKY" }
Agora para atualizar apenas um campo sem alterar todo o documento usamos o $set, veja:
db.update({ email: 'pedro@gmail.com' }, {$set {idade: 19}}, {}, function (err) {
if(err)return console.log(err);
console.log("Usuário atualizado");
});
o documento que antes era assim:
{"nome":"Pedro Henrique","idade":18,"email":"pedro@gmail.com","senha":123456789,"_id":"vxJMEAMBFLmkUmKY"}
passou a ficar assim:
{"nome":"Pedro Henrique","idade":19,"email":"pedro@gmail.com","senha":123456789,"_id":"vxJMEAMBFLmkUmKY"}
A idade foi atualizada e manteve o restante do documento intacto.
Removendo um documento:
Para removermos um documento usamos:
db.remove({ _id: "vxJMEAMBFLmkUmKY" }, {}, function (err) {
if(err)return console.log(err);
console.log("Usuário removido");
});
Podemos remover usando o campo nome para procurarmos o documento:
db.remove({nome: "Pedro Henrique" }, {}, function (err) {
if(err)return console.log(err);
console.log("Usuário removido");
});
Para removermos mais de um documento ao mesmo tempo usamos a opção multi:
db.remove({nome: "Pedro Henrique" }, {multi: true}, function (err) {
if(err)return console.log(err);
console.log("Usuário removido");
});
Acho que esse é um resumão do neDB para saber mais informações acesse: https://github.com/louischatriot/nedb tem muito mais opções la, basta da uma olhada, para quem quer usar em projetos simples com o arduino o neDB é muito bom, utilizei ele no meu projeto de Umidade do solo para salvar as informações de umidade, configurações do rele etc, qualquer coisa comente ai, ate mais!