首页 > 解决方案 > 数据未插入数据库

问题描述

自从我尝试使用 mongoose 将数据插入 mongodb 但无法在 mongodb 中获取数据的几天以来,我就面临着这个问题。下面是我创建的架构

const mongoose = require('mongoose')
const db = require('../db/db')
const crypto = require('crypto')
const { v4 : uuidv4 } = require('uuid');
const validator = require('validator')
// const { stringify } = require('querystring')
const schema = mongoose.Schema

const userSchema = new schema({
    ObjId: schema.Types.ObjectId,
    name : {
        type : String,
        trim: true,
        required : true,
        maxlength: 32
    },
    email : {
        type : String,
        trim: true,
        required : true,
        validate(value) {
            if(!validator.isEmail(value)){
                throw new Error ('The Email you have entered is not correct. Please enter the correct Email ID')
            }
        }
    },
    hashed_password : {
        type : String,
        required : true,
    },
    about : {
        type : String,
        trim: true,
        required: true
    },
    salt : String,
    user_roles: {
        type: Number,
        default: 0,
        required: true
    },
    history : {
        type: Array,
        default: []
    },
    // timestamps: {
    //     createdAt : '',
    //     updatedAt : {type : Date, default : Date.now()},
    // },
}, {timestamps: true})

// added virtual field

userSchema.virtual('password')
.set((password) =>{
    this.password = password,
    this.salt = uuidv4()
    this.hashed_password = this.encryptPassword(password)
})
.get(() => {
    return this._password
})


userSchema.methods = {
    encryptPassword : (password) => {
        if(!password) return ''

        try {
            return crypto.createHmac('sha256', this.salt)
                            .update(password)
                            .digest("hex")
        }
        catch(error) {
            if(error) {
                console.log('Found an Error in Line 70 in User.Js', error.message)
            }
        }
    }
}

module.exports = mongoose.model("User", userSchema);

这就是我连接数据库的方式

const mongoose = require('mongoose')
require('dotenv').config
// const connectionURL = 'mongodb://127.0.0.1:27017'
//const databaseName = 'ecommerce_db'

mongoose.connect(
    // connectionURL,
    process.env.MONGOURI,
    {
        useNewUrlParser: true,
        useCreateIndex: true,
        useUnifiedTopology: true
    }
)
// .then((result) => { console.log('Mongo DataBase Connected', result)})
.then(() => { console.log('Mongo DataBase Connected')})
.catch((err) => {console.log('Mongoose Connection Failed', err)})

这就是我保存数据的地方

const User = require('../models/user')
const { response } = require('express')
const mongoose = require('mongoose')


exports.signUp = (req, res) => {
    console.log('[Logging]', req.body)
    // const user = new User({
    //     _id: mongoose.Schema.Types.ObjectId(),
    //     name: req.body.name,
    //     email: req.body.email,
    //     password: req.body.hashed_password
    // })
    const user = new User(req.body)
    user.save((error, response) => {
        if(error) {
            return res.status(400).json({
                error
            })
        }
        res.json({
            user
        })
    })
}

我得到了所有正确的输入和成功消息,但我仍然无法在 mongodb 中获取数据,我做错了什么吗

标签: node.jsmongodbmongoose

解决方案


推荐阅读