Я знаю, что уже задал вопрос, но я не могу понять, что я делаю неправильно в своем коде, в моем '/', когда я запускаю приложение, маршрутизатор выполняет мой 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');
ли вы создать/зарегистрировать модель в соответствии с документацией Mongoose? => http://mongoosejs.com/docs/guide.html ..... var lojas = mongoose.model ('Lojas', lojasSchema); ... Я думаю, что необходимо зарегистрировать Модель. –
yep У меня в моей модели последняя строка –