Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos, bom dia!
Estou iniciando uns estudos com node, e pra começo estou fazendo um sistema de cadastro. Até ai rodou tudo certinho qnd eu fiz inline, tudo na pagina index.js. Agr se eu colocar a parte do mongoose na pagina model.js, eu recebo um erro: USER.CREATE IS NOT A FUNCTION.
Alguém pode me ajudar a separar meu código em index.js, routes.js e model.js.
var express = require('express');var app = express();var http = require('http').Server(app);//var model = require('./models');var bodyParser = require('body-parser');app.use(bodyParser.json());app.use(express.static('public'));var urlencodedParser = bodyParser.urlencoded({ extended: false });var mongoose = require('mongoose');mongoose.connect('mongodb://localhost:27017/project');var models = {};var user = mongoose.model('User',{ username: String, email: String, status: Boolean});mongoose.connection.on('connected', function () { console.log('Mongoose connected...');}); module.exports = models;app.post('/add', urlencodedParser, function (req, res) { console.log('mostra o que tens :'+req.body); user.create({ username: req.body.username, email: req.body.email, status: req.body.status }, function (err, user) { if (err) console.log(err); res.json(user); });});http.listen(3000);Tu criou um mongoose schema pra esse seu model ?
N amigo! N usei nhm schema.
Tinha até usado em um outro exemplo, MS n funcionou.
Esse tal de schema resolveria esse problema? S sim, como crio?
Por acaso seria var user = New schema({... ?
Acabei de ver ali, que você passou o schema por parametro, não precisa criar um new Schema....
Vamos lá, temos que analisar o seu código pra fazer uma separação... posso te ajudar.
Vamos lá então, vou mostrar uma estrutura básica....
//Arquivo app.js
var express = require('express');
var bodyParser = require('body-parser');
var routerExemplo = require('./routerExemplo');//irei explicar de onde virá este arquivo também...
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));app.use('/',RouterExemplo);
//dando export no app para importamos no index.js
module.exports = app;
//Arquivo index.js
//Importanto o app que demos export lá
var app = require('./app');
//startando o servidor passando porta e um callback
app.listen(app.get('porta'),function(){
console.log('Servidor rodando na porta :'+app.get('porta'));
});
// Arquivo routerExemplo
var express = require('express');
var router = express.Router();
router.get('/rota-exemplo', function(request,response){
console.log('Rota de exemplo...');
});
//dando export no router para importar no app
module.exports = router;
Vamos lá entender cada passo:
Em app você define as configurações como porta, o arquivo routes separado, lembrando que o ideal é você separar em vários Routers e utilizar o app.use('/', NomeDoArquivoDeRota), para que o express faça o bind das rotas e assim você consiga separar bem cada rota com sua responsabilidade. Também passamos os demais modulos para o app como você mesmo já havia feito.
Recomendo fortemente para o aprendizado o livro de um dos moderadores aqui do fórum o William Bruno ou wbruno, o livro Construindo Aplicações com NodeJS, é um ótimo guia e há muito contéudo lá, muito bem explicado e utilizando boas práticas.
>
Vamos lá então, vou mostrar uma estrutura básica....
//Arquivo app.js
var express = require('express');
var bodyParser = require('body-parser');
var routerExemplo = require('./routerExemplo');//irei explicar de onde virá este arquivo também...
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));app.use('/',RouterExemplo);
//dando export no app para importamos no index.js
module.exports = app;
//Arquivo index.js
//Importanto o app que demos export lá
var app = require('./app');
//startando o servidor passando porta e um callback
app.listen(app.get('porta'),function(){
console.log('Servidor rodando na porta :'+app.get('porta'));
});
// Arquivo routerExemplo
var express = require('express');
var router = express.Router();
router.get('/rota-exemplo', function(request,response){
console.log('Rota de exemplo...');
});
//dando export no router para importar no app
module.exports = router;
Vamos lá entender cada passo:
Em app você define as configurações como porta, o arquivo routes separado, lembrando que o ideal é você separar em vários Routers e utilizar o app.use('/', NomeDoArquivoDeRota), para que o express faça o bind das rotas e assim você consiga separar bem cada rota com sua responsabilidade. Também passamos os demais modulos para o app como você mesmo já havia feito.
Recomendo fortemente para o aprendizado o livro de um dos moderadores aqui do fórum o William Bruno ou wbruno, o livro Construindo Aplicações com NodeJS, é um ótimo guia e há muito contéudo lá, muito bem explicado e utilizando boas práticas.
Amigo, mt obrigado pela resposta. Me ajudou mt.
eu vi q faltava ali o models.User.create({.. na index.js. P isso que dava o user.create is not function.
Vou pegar um livro msm p aprender, pq o material q achei na net até agr, os caras so codificam e pouco explicam oq tão fazendo.
Mt obrigado ai!
Não tem de que, precisando dá um toque!
Um abraço e bons estudos.
Tu criou um mongoose schema pra esse seu model ?