#mongodb #express #mongoose
Вопрос:
Я понимаю, что Mongoose предоставляет простое решение на основе схемы для моделирования данных вашего приложения. Он включает в себя встроенное приведение типов, проверку, построение запросов, бизнес, поэтому вот мой код.
У меня есть следующая схема на моей модели:
const mongoose = require("mongoose");
const crypto = require("crypto");
const userSchema = new mongoose.Schema(
{
username: {
type: String,
trim: true,
required: true,
max: 32,
unique: true,
index: true,
lowercase: true,
},
name: {
type: String,
trim: true,
required: true,
max: 32,
},
email: {
type: String,
trim: true,
required: true,
unique: true,
lowercase: true,
},
profile: {
type: String,
required: true,
},
hashed_password: {
type: String,
required: true,
},
salt: {
type: String,
},
about: {
type: String,
},
role: {
type: Number,
trim: true,
},
photo: {
data: Buffer,
contentType: String,
},
resetPasswordLink: {
data: String,
default: "",
},
},
{ timestamp: true }
);
userSchema
.virtual("password")
.set(function (password) {
// create a temporary variable called _password
this._password = password;
// generate salt
this.salt = this.makeSalt();
// encryptPassword
this.hashed_password = this.encryptPassword(password);
})
.get(function () {
return this._password;
});
userSchema.methods = {
authenticate: function (plainText) {
return this.encryptPassword(plainText) == this.hashed_password;
},
encryptPassword: function (password) {
if (!password) return "";
try {
return crypto.createHmac("sha1", this.salt).update(password).digest("hex");
} catch (err) {
return "";
}
},
makeSalt: function () {
return Math.round(new Date().valueOf() * Math.random() "");
},
};
module.exports = mongoose.model("User", userSchema);
Но это вернуло эту ошибку:
Error: Cannot find module 'mongoose'
Require stack:
- C:UsersJonesDesktopmultiblogmodelsuser.js
code: 'MODULE_NOT_FOUND',
requireStack: [
'C:\Users\Jones\Desktop\multiblog\models\user.js',
'C:\Users\Jones\Desktop\multiblog\controllers\auth.js',
'C:\Users\Jones\Desktop\multiblog\backend\routes\auth.js',
'C:\Users\Jones\Desktop\multiblog\backend\server.js'
Есть идеи, что я здесь упускаю? Я гарантирую, что у меня package.json
установлен мангуст.
Я также смотрю на другие файлы и структуру моей схемы, и это просто прекрасно.
Как вы думаете, в чем моя ошибка?
Обновить: package.json
{
"name": "backend",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon server.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.0",
"cookie-parser": "^1.4.5",
"cors": "^2.8.5",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"express-jwt": "^6.0.0",
"express-validator": "^6.10.0",
"formidable": "^1.2.2",
"jsonwebtoken": "^8.5.1",
"lodash": "^4.17.21",
"mongoose": "^5.12.3",
"morgan": "^1.10.0",
"nodemon": "^2.0.7",
"shortid": "^2.2.16",
"slugify": "^1.5.0",
"string-strip-html": "^8.2.12"
}
}
Комментарии:
1. попробуйте удалить
node_modules
папку иpackage-lock.json
файл и запуститеnpm install
команду.2. Я попробовал и тот же результат.
3. добавьте файл package.json в свой вопрос.
4. Я только что обновил.
Ответ №1:
rm -rf node_modules package-lock.json amp;amp; npm install amp;amp; npm start
Если это не сработало, я почти уверен, что некоторые из ваших папок находятся за пределами вашей текущей папки, в которой вы работаете над приложением Mongo или express.