2017-01-22 3 views
0

Я знаю, что уже задал вопрос, но я не могу понять, что я делаю неправильно в своем коде, в моем '/', когда я запускаю приложение, маршрутизатор выполняет мой index.js файл, который имеет следующий код:Schema не была зарегистрирована для модели

var express = require('express'); 
var router = express.Router(); 
var mongoose = require('mongoose'); 
var Loja = require('../models/lojas'); 

router.use(function timeLog(req, res, next) { 
console.log('Time: ', Date()); 
console.log('Request Type:', req.method); 
console.log('Request URL:', req.originalUrl); 
next(); //passa a solicitação para a próxima função de middleware na pilha 
}); 

//get all contacts with specific filter 
router.post('/registo',function(req,res){ 
    var loja = new Loja(); 

    loja.name = req.body.name; 
    loja.email = req.body.email; 

    loja.setPassword(req.body.password); 

    loja.save(function(err){ 
     var token; 
     token = loja.generateJwt; 
     res.status(200); 
     res.json({ 
      "token": token 
     }); 
    }); 

}); 

моего app.js выглядит следующим образом:

var express = require('express'); 
var bodyParser = require('body-Parser'); 
var mongoose = require('mongoose'); 
var passport = require('passport'); 
require('./config/passport'); 
var app = express(); 


var dbName = 'LojasDB'; 
var connectionString = 'mongodb://localhost:27017' + dbName; 
mongoose.Promise = global.Promise; 
mongoose.connect(connectionString); 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({extended:true})); 

app.use(passport.initialize()); 


app.use(function(req,res,next){ 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); 
    res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-MethodOverride,Content-Type, Accept'); 
next(); 
}); 

app.use('/',require('./routes/index')); 

app.listen(8080,function(){ 
    console.log("listen on port 8080"); 
}) 

пояснит У меня есть модель под названием Лох, что я хочу использовать для проверки подлинности, поэтому я впервые использовал паспорт, но почему-то я получаю сообщение об ошибке, которое схема не была зарегестрирована для этой модели, моя модель выглядит следующим образом:

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var jwt = require('jsonwebtoken'); 
var crypto = require('crypto'); 

var lojasSchema = mongoose.Schema({ 
    email: { 
    type: String, 
    unique: true, 
    required: true 
    }, 
    name: { 
    type: String, 
    required: true 
    }, 
    hash: String, 
    salt: String 
}); 

lojasSchema.methods.generateJwt = function() { 
    var expiry = new Date(); 
    expiry.setDate(expiry.getDate() + 7); 

    return jwt.sign({ 
    _id: this._id, 
    email: this.email, 
    name: this.name, 
    exp: parseInt(expiry.getTime()/1000), 
    }, "12345"); // DO NOT KEEP YOUR SECRET IN THE CODE! 
}; 

lojasSchema.methods.setPassword = function(password){ 
    this.salt = crypto.randomBytes(16).toString('hex'); 
    this.hash = crypto.pbkdf2Sync(password, this.salt, 1000, 64).toString('hex'); 
}; 

lojasSchema.methods.validPassword = function(password) { 
    var hash = crypto.pbkdf2Sync(password, this.salt, 1000, 64).toString('hex'); 
    return this.hash === hash; 
}; 

module.exports = mongoose.model('Loja',lojasSchema); 

поэтому я экспортирование модели здесь, так что в моем маршрутизаторе index.js я требую так:

var Loja = require('../models/lojas'); 
+0

ли вы создать/зарегистрировать модель в соответствии с документацией Mongoose? => http://mongoosejs.com/docs/guide.html ..... var lojas = mongoose.model ('Lojas', lojasSchema); ... Я думаю, что необходимо зарегистрировать Модель. –

+0

yep У меня в моей модели последняя строка –

ответ

0

следующая строка:

var lojasSchema = mongoose.Schema({ 

должно быть:

var lojasSchema = new mongoose.Schema({ 
+0

вы правы, я меняю его, но он продолжает терпеть неудачу с той же ошибкой: S –

+0

Также как @mrtaz заявил, что вы не экспортируете ** маршрут ** в свой индекс .js файл: добавить 'module.exports = router;' в конец файла * index.js *. – dNitro

+0

У меня уже было это: S –

0

Убедитесь, что вы экспортируете маршруты из этого файла index.js, поскольку я вижу, что они отдельно от вашего файла app.js. Вам нужно, чтобы ваши модели Mongoose в вашем файле app.js. Поэтому добавьте что-то подобное в app.js.

var Loja = require('../models/lojas');

+0

Я делаю это, чтобы: S, не знаю об ошибке, я приеду в github, вы можете взглянуть? –

+0

Вы экспортируете ваши маршруты? Да, я могу проверить это. – mrtaz

+0

Да, я, посмотрите: https://github.com/FilipeCosta/LojasOnline –

Смежные вопросы