【问题标题】:mongoDB error data base is connected but i can't stock my datamongoDB 错误数据库已连接,但我无法存储我的数据
【发布时间】:2020-08-29 07:15:29
【问题描述】:

大家好,我正在开发我的身份验证后端我设置了我的路由器我的模型中间件和所有东西然后我尝试使用邮递员查看注册是否有效,每次我点击发送请求时都没有发生任何事情不知道我应该怎么做,所以请任何人帮助解决这个问题

database/db.js // 连接到数据库

const mongoose = require('mongoose')
require('dotenv').config();
const base = process.env.MONGO_DATA;


try {
mongoose.connect( base,
 {useNewUrlParser: true, useCreateIndex: true}, () =>
console.log("database connected"));    
}catch (error) { 
console.log("could not connect");    
}

models/user.model.js

const mongoose = require('mongoose')
const validator = require('validator')
const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken')

const userSchema = mongoose.Schema({
    name: {
        type: String,
        required: true,
        trim: true
    },
    email: {
        type: String,
        required: true,
        unique: true,
        lowercase: true,
        validate: value => {
            if (!validator.isEmail(value)) {
                throw new Error({error: 'Invalid Email address'})
            }
        }
    },
    password: {
        type: String,
        required: true,
        minLength: 7
    },
    tokens: [{
        token: {
            type: String,
            required: true
        }
    }]
})

userSchema.pre('save', async function (next) {
    // Hash the password before saving the user model
    const user = this
    if (user.isModified('password')) {
        user.password = await bcrypt.hash(user.password, 8)
    }
    next()
})

userSchema.methods.generateAuthToken = async function() {
    // Generate an auth token for the user
    const user = this
    const token = jwt.sign({_id: user._id}, process.env.JWT_KEY)
    user.tokens = user.tokens.concat({token})
    await user.save()
    return token
}

userSchema.statics.findByCredentials = async (email, password) => {
    // Search for a user by email and password.
    const user = await User.findOne({ email} )
    if (!user) {
        throw new Error({ error: 'Invalid login credentials' })
    }
    const isPasswordMatch = await bcrypt.compare(password, user.password)
    if (!isPasswordMatch) {
        throw new Error({ error: 'Invalid login credentials' })
    }
    return user
}

const User = mongoose.model('User', userSchema)

module.exports = User

控制器/user.js

const express = require('express')
const User = require('../models/user.model')

const router = express.Router()

router.post('/users', async (req, res) => {
    // Create a new user
    try {
        const user = new User(req.body)
        await user.save()
        const token = await user.generateAuthToken()
        res.status(201).send({ user, token })
    } catch (error) {
        res.status(400).send(error)
    }
})

router.post('/users/login', async(req, res) => {
    //Login a registered user
    try {
        const { email, password } = req.body
        const user = await User.findByCredentials(email, password)
        if (!user) {
            return res.status(401).send({error: 'Login failed! Check authentication credentials'})
        }
        const token = await user.generateAuthToken()
        res.send({ user, token })
    } catch (error) {
        res.status(400).send(error)
    }

})

module.exports = router

index.js

require('dotenv').config()
const express = require('express')
const userRouter = require('./src/routers/user')
const port = process.env.PORT
require('./src/database/db')

const app = express()

app.use(express.json())
app.use(userRouter)

app.listen(port, () => {
    console.log(`Server running on port ${port}`)
})

所以每次我尝试查看我是否已注册时,邮递员都没有给出任何回应,他一直说 没有结果,有人可以帮助我吗?

【问题讨论】:

    标签: node.js mongodb express backend mern


    【解决方案1】:

    您是否在“C”驱动器中创建了“data”和“db”文件夹?

    【讨论】:

    • 打开本地磁盘C。创建一个名为“data”的文件夹。在“ data ”文件夹中创建另一个名为“ db ”的文件夹...
    【解决方案2】:

    步骤如下:

    • 在您的机器上创建一个名为 mongodb 的文件夹
    • mongodb 文件夹中创建一个名为 data 的文件夹
    • data 文件夹中再创建一个名为 db 的文件夹

    更多信息请参考here

    【讨论】:

      猜你喜欢
      • 2021-08-19
      • 2020-12-08
      • 2012-10-29
      • 1970-01-01
      • 2016-05-29
      • 2023-01-31
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      相关资源
      最近更新 更多