1. Bobagem
Desde que entrei em contato com o MongoDB em janeiro de 2013, desenvolvi serviços de tag de viagem, sistema de recuperação de tags Weibo, serviços de mapa e serviços de aplicativos da web ... os cenários usando o MongoDB foram transferidos do ambiente .NET e Java para a plataforma Node.js. Sinto cada vez mais que Node.js e MongoDB são combinados muito bem entre si. Parece que MongoDB e Node.js nascem com um par. De fato, o cliente do MongoDB é o mecanismo de análise da JS. Portanto, escolher MongoDB e Node.js como protótipos de produto também é uma escolha muito boa. Na internet, encontrei internautas perguntando sobre o desenvolvimento do MongoDB, qual motorista é a melhor escolha. Eu costumava usar drivers nativos, mas há muitas coisas a prestar atenção ao escrever código, como a operação de fechamento de conexão, etc. Portanto, no ambiente de desenvolvimento Node.js, recomendo o uso de Mongoskin aqui.
2. Vários conceitos que precisam ser discutidos
(1) Banco de dados: o mesmo que o banco de dados relacional.
(2) Coleção: Tabelas no banco de dados relacional.
(3) Documento: Um registro semelhante ao banco de dados relacional é na verdade um objeto JSON.
(4) Design do banco de dados: recomenda -se considerar o design do NOSQL e abandonar a idéia de design de dados relacionais; De fato, o design do banco de dados NoSQL é profundo e precisa ser praticado continuamente no projeto.
(5) Sistema de usuário: Cada banco de dados possui seu próprio administrador, que pode:
A cópia do código é a seguinte:
use dbname; db.adduser ('root_1', 'teste');
(7) Recomenda -se alterar a porta externa
(8) Inicie o serviço (este é um pouco modificado sob Win e Linux):
A cópia do código é a seguinte:
MONGOD - -DBPATH "XX/MONGODB/DATA/DB" - -LOGPATH "XX/MONGODB/LOG/MONGO.LOG" - -LOGAPPEND -AUTH -REPORT 7868
3. Construir infraestrutura de desenvolvimento de MongoDB
(0) NPM Instale o MongoSkin Instale Mongoskin
A instalação do Node.js, o pacote e outros mecanismos não são introduzidos aqui.
(1) Crie Config.json de arquivo de configuração Config.json
A cópia do código é a seguinte:
{
"dbname": "teste",
"Port": "7868",
"Host": "127.0.0.1",
"Nome de usuário": "teste",
"Senha": "teste"
}
(2) Crie Mongo de classe relacionado à UTIL: Exportar um objeto DB
A cópia do código é a seguinte:
var monongoskin = requer ('Mongoskin'),
config = requer ('./../ config.json');
/*
* @des: exportar o módulo de conexão do banco de dados
* */
module.exports = (function () {
var host = config.host,
porta = config.port,
dbname = config.dbname,
nome de usuário = config.username,
senha = config.password,
str = 'mongodb: //' + nome de usuário + ':' + senha + '@' + host + ':' + porta + '/' + dbname;
var option = {
nativo_parser: true
};
return mongoskin.db (str, opção);
}) ();
(3) Crie a classe básica de CRUD: para reduzir o código de coalhada duplicado, você só precisa passar no objeto JSON relevante.
A cópia do código é a seguinte:
var db = requer ('./ Mongo.js'),
status = requer ('./ status'),
mongoskin = requer ('mongoskin');
var crud = função (coleta) {
this.collection = coleção;
db.bind (this.collection);
};
Crud.prototype = {
/*
* @des: crie um registro
* @model: registro inserido, modelo em formato json
* @callback: retorno de chamada, retorne o registro de informações bem -sucedidas de inserção ou falha
*
* */
Criar: function (modelo, retorno de chamada) {
db [this.collection] .Save (modelo, função (err, item) {
if (err) {
retornar retorno de chamada (status.fail);
}
item.status = status.success.status;
item.Message = status.success.message;
retornar retorno de chamada (item);
});
},
/*
* @Des: Leia um registro
* @Query: Condições de consulta, JSON Literal of Mongo Query
* @callback: retorno de chamada, retorna registros que atendem aos requisitos ou informações de falha
*
* */
Leia: função (consulta, retorno de chamada) {
db [this.collection] .find (consulta) .toArray (function (err, itens) {
if (err) {
retornar retorno de chamada (status.fail);
}
var obj = {
Status: status.success.status,
Mensagem: status.success.message,
Itens: itens
};
retorno de retorno de chamada (obj);
});
},
/*
* @des: atualize um registro
* @Query: Condições de consulta, JSON Literal of Mongo Query, aqui está _id
* @updatemodel: modelo no formato JSON que precisa ser atualizado
* @Callback: retorna informações de sucesso ou falha
*
* */
ATUALIZAÇÃO: function (consulta, updatemodel, retorno de chamada) {
var set = {set: updatemodel};
db [this.collection] .Update (consulta, set, function (err) {
if (err) {
retornar retorno de chamada (status.fail);
}outro{
retornar retorno de chamada (status.success);
}
});
},
/*
* @des: exclua um recorde
* @Query: Condições de consulta, JSON Literal of Mongo Query
* @Callback: retorna a mensagem de falha ou sucesso
*
* */
Deletedata: function (consulta, retorno de chamada) {
db [this.collection] .remove (consulta, function (err) {
if (err) {
retornar retorno de chamada (status.fail);
}
retornar retorno de chamada (status.success);
});
}
};
Module.Exports = Crud;
(4) Construir status.json, como alguns status são necessários para indicar sucesso e falha, ele pode ser expandido para erros de código de verificação, erros de verificação de SMS, erros de nome de usuário etc. no estágio posterior.
A cópia do código é a seguinte:
module.exports = {
/*
* Status de sucesso
*
* */
Sucesso: {
Status: 1,
Mensagem: 'OK'
},
/*
* Status de falha
*
* */
Falhar: {
Status: 0,
Mensagem: 'Fail'
},
/*
* A senha inserida duas vezes é inconsistente
* */
repetição de palavras -palavras: {
Status: 0,
Mensagem: 'As senhas inseridas duas vezes são inconsistentes'
}
};