【发布时间】:2018-08-09 19:08:54
【问题描述】:
我正在尝试制作一个应该具有以下流程的项目。 注册 -> 登录 -> 个人资料创建 -> 秘密页面 我已经实现了注册和登录路由,但是当我为个人资料页面保存数据时,它显示了上述错误。我只能第一次保存数据。我也无法为其他用户保存数据。谢谢。
// This is the route which i am including.
var express = require('express');
var router = express.Router();
var passport = require('passport');
var multer = require('multer');
var mongoose = require('mongoose');
var User = require('../models/user.model.js');
var Profile = require('../models/profile.model.js');
var path = require('path');
// Defining the storage path to the multer
var storage = multer.diskStorage({
destination : 'uploads/',
filename: function(req, file, cb){
cb(null, file.filedname + '-' +Date.now() + path.extname(file.originalname));
},
fileFilter: function(file, cb){
checkFileType(file, cb);
}
});
//
var upload = multer({
storage: storage
});
//The signup route to post the username and password and register in the database
router.post('/signup', function(req, res){
req.body.username
req.body.password
User.register(new User({username : req.body.username}), req.body.password, function(err, user){
if (err) {
console.log(err);
return res.render('signup.ejs');
}
passport.authenticate('local')(req, res, function(){
res.render('profile.ejs');
});
});
});
// The login route to post the username and password and login into the portal
router.post('/login', passport.authenticate('local', {
successRedirect : '/secret',
failureRedirect : '/login'
}), function (req, res) {
// body...
// console.log("Login Working");
});
// The profile route to render the profile page only if logged in
router.get('/profile', isLoggedIn, function(req, res){
res.render('profile.ejs')
});
// The profile route. This route is generating error
router.post('/profile', upload.any(), function(req, res){
console.log(req.body);
var profileDetails = {};
profileDetails.path = req.files[0].path;
profileDetails.originalname = req.files[0].originalname;
profileDetails.name = req.body.profileName;
profileDetails.email = req.body.profileEmail;
Profile.create(profileDetails, function(err){
if (err) {
console.log(err);
}
res.redirect('/missing');
});
});
router.get('/missing', isLoggedIn, function (req, res) {
// body...
res.render('missing.ejs')
})
//The function to check is user is logged in or not
function isLoggedIn(req, res, next){
if (req.isAuthenticated()) {
return next();
}
res.redirect('/login');
}
module.exports = router;
【问题讨论】:
-
你能发布完整的错误信息吗?很难说它抱怨的是哪个键。
-
{ MongoError: E11000 duplicate key error collection: demo-db.profiles index: username_1 dup key: { : null } at Function.MongoError.create (E:\Demo\V5\node_modules\mongodb- core\lib\error.js:49:10) 在 toError (E:\Demo\V5\node_modules\mongodb\lib\utils.js:149:22) 在 coll.s.topology.insert (E:\Demo\ V5\node_modules\mongodb\lib\operations\collection_ops.js:803:39) 在 E:\Demo\V5\node_modules\mongodb-core\lib\connection\pool.js:531:18 在 process._tickCallback (internal/进程/next_tick.js:61:11)
-
您正在使用相同的用户名创建文档..
标签: javascript node.js mongodb express mongoose