node.js - ReferenceError:_user 未在 \routes\user.js:35:13 中定义
问题描述
有人可以帮助尝试解决这个问题 3 或 4 天吗我不断收到 ReferenceError: _user is not defined at \routes\user.js:35:13 dory 如果我发布了这个错误请原谅我
我正在使用节点和“bcrypt”:“^5.0.1”、“body-parser”:“^1.19.0”、“dotenv”:“^10.0.0”、“express”:“^4.17.1” , "express-validator": "^6.6.1", "mongoose": "^6.0.6",
//index.server.js
const express = require (`express`);
const env = require (`dotenv`);
const app = express();
const bodyParser = require (`body-parser`);
const mongoose = require (`mongoose`);
//routes
const userRoutes = require(`./routes/user`);
//enviroment verables .env
env.config();
//db connection
mongoose.connect(
mongodb+srv://${process.env.MONGO_DB_USER}:${process.env.MONGO_DB_PASSWORD}@localhost:27017/${process.env.MONGO_DB_DATABASE}?retryWrites=true&w=majority`,
{
useNewUrlParser: true,
useUnifiedTopology: true,
//useCreateIndex: true
}
).then(() => {
console.log(`DB CONNECTED `)
});
app.use(bodyParser());
app.use(`/api`, userRoutes);
app.listen(process.env.Port, () => {
console.log(`server is up on port ${process.env.Port} `);
});
//routes/user.js
const { request } = require("express");
const express = require(`express`);
const router = express.Router();
const User = require(`../models/user`);
router.post(`/signin`, (reg, res) => {
});
router.post(`/signup`, (req, res) => {
User.findOne({ email: req.body.email })
.exec((error, user) => {
if (user) return res.status(400).json({
message: `User already registered`
});
const {
firstname,
lastname,
email,
password
} = req.body;
const_user = new User({
firstname,
lastname,
email,
password,
username: Math.random().toString()
});
_user.save((error, data) => {
if (error) {
return res.status(400).json({
message: "somthing went wrong"
});
}
if (data) {
return res.status(201).json({
User: data
})
}
});
});
});
module.exports = router;
//models/user.js
const mongoose = require(`mongoose`);
const bcrypt = require(`bcrypt`);
const userSchema = new mongoose.Schema({
firstName: {
type: String,
required: true,
trim: true,
min: 3,
max: 20
},
lastName: {
type: String,
required: true,
trim: true,
min: 3,
max: 20
},
username: {
type: String,
required: true,
trim: true,
unique: true,
index: true,
lowercase: true
},
email: {
type: String,
required: true,
trim: true,
unique: true,
lowercase: true
},
hash_password: {
type: String,
required: true
},
role: {
type: String,
enum: [`user`, `admin`],
default: `user`
},
contactNumber: {type: String},
pofilePicture: {type: String},
}, {timestamps: true});
userSchema.virtual(`password`)
.set(function(password){
this.hash_password = bcrypt.hashSync(password, 10);
});
userSchema.method = {
authentocate: function(password) {
return bcrypt.compareSync(password, this.hash_password);
}
}
module.exports = mongoose.model('User', userSchema);
解决方案
在router.post('signup')
-callback 中,寻找
const_user = new User({
并添加缺少的空间,如下所示:const _user = new User({
.
提示:使用带有语法突出显示的 IDE(即 Visual Studio Code),因此关键字(例如const
)通常是不同于其他代码位的另一种颜色,因此您可以更清楚地发现这些类型的错字。
推荐阅读
- html - 通过响应式css向上/向下绘制交叉背景
- qt - 退出 1000 的 QThread - pyqt5
- r - 在超过 10% 的重复记录中查找值 (R)
- python - Tensorflow:你在 Adam 和 Adagrad 中设置的学习率只是初始学习率吗?
- r - R 不可打印分隔符
- android - Android 字符串数组 itemm
- ios - UI 表重用单元约束在 IB 中看起来不错,但在模拟时不起作用
- python-3.x - 小部件在 KV 文件中不断重复/复制
- python - 3-vector 系列 LSTM 不能突破 0.5 精度
- angular - angulardart:StreamController 在以下示例中如何工作?