소개
게시글
질문&답변
2022.10.20
postman html에러(unexpected string in JSON at position 39)
//index.js const express = require("express"); const app = express(); const port = 5000; const cookieParser = require("cookie-parser"); const bodyParser = require("body-parser"); const config = require("./config/key"); const { User } = require("./models/User"); //application/x-www-form-urlencoded를 분석해서 가져올 수 있게 app.use(bodyParser.urlencoded({ extended: true })); //application/json app.use(bodyParser.json()); app.use(cookieParser()); const mongoose = require("mongoose"); mongoose .connect(config.mongoURI, { useNewUrlParser: true, useUnifiedTopology: true, //useCreateIndex: true, //useFindAndModify: false, }) .then(() => console.log("MongoDB Connected...")) .catch((err) => console.log(err)); app.get("/", (req, res) => res.send("Hello World!새로고침하기전에 바뀌어용")); app.post("/register", (req, res) => { //회원가입할때 필요한 정보들을 client에서 가져오면 //그것들을 데이터베이스에 넣어준다. const user = new User(req.body); user.save((err, userInfo) => { if (err) return res.json({ success: false, err }); return res.state(200).json({ success: true, }); }); }); app.post("/api/users/login", (req, res) => { //요청된 이메일을 데이터베이스에서 있는지 찾는다. User.findOne({ email: req.body.email }, (err, user) => { // console.log('user', user) if (!user) { return res.json({ loginSuccess: false, message: "제공된 이메일에 해당하는 유저가 없습니다.", }); } //요청된 이메일이 데이터 베이스에 있다면 비밀번호가 맞는 비밀번호 인지 확인. user.comparePassword(req.body.password, (err, isMatch) => { // console.log('err',err) // console.log('isMatch',isMatch) if (!isMatch) return res.json({ loginSuccess: false, message: "비밀번호가 틀렸습니다.", }); //비밀번호 까지 맞다면 토큰을 생성하기. user.generateToken((err, user) => { if (err) return res.status(400).send(err); // 토큰을 저장한다. 어디에 ? 쿠키 , 로컳스토리지 res .cookie("x_auth", user.token) .status(200) .json({ loginSuccess: true, userId: user._id }); }); }); }); }); app.listen(port, () => console.log(`Example app listening on port ${port}!`));
- 0
- 4
- 1.1K
질문&답변
2022.10.20
postman html에러(unexpected string in JSON at position 39)
//user.js const mongoose = require("mongoose"); const bcrypt = require("bcrypt"); const saltRounds = 10; const jwt = require("jsonwebtoken"); const userSchema = mongoose.Schema({ name: { type: String, maxlength: 50, }, email: { type: String, trim: true, unique: 1, }, password: { type: String, }, lastname: { type: String, maxlength: 50, }, role: { type: Number, default: 0, }, image: String, token: { type: String, }, tokenExp: { type: Number, }, }); userSchema.pre("save", function (next) { var user = this; if (user.isModified("password")) { //비밀번호를 암호화 시킨다. save하기 pre에 할 function을 정함.(bcrypt를 통해) bcrypt.genSalt(saltRounds, function (err, salt) { if (err) return next(err); bcrypt.hash(user.password, salt, function (err, hash) { if (err) return next(err); user.password = hash; next(); }); }); } else { next(); } }); userSchema.methods.comparePassword = function (plainPassword, cb) { //암호화된 비밀번호와 plainpassword가 같은지 체크해야함. bcrypt.compare(plainPassword, this.password, function (err, isMatch) { if (err) return cb(err); cb(null, isMatch); }); }; userSchema.methods.generateToken = function (cb) { var user = this; //jsonwebtoken을 이용해서 token을 생성하기 var token = jwt.sign(user._id.toHexString(), "secretToken"); // user._id+ "secretToken" = token // -> // 'secretToken' -> user._id user.token = token; user.save(function (err, user) { if (err) return cb(err); cb(null, usuer); }); }; const User = mongoose.model("User", userSchema); module.exports = { User };
- 0
- 4
- 1.1K