【问题标题】:Trying to save a database But when I test the api on Postman I am getting an error尝试保存数据库但是当我在 Postman 上测试 api 时出现错误
【发布时间】:2021-01-26 16:13:45
【问题描述】:

我正在尝试使用 mongoose 将一些数据保存到数据库中,但是当我尝试在邮递员上对其进行测试时出现错误:如果有人可以帮助我,请提供帮助。两天后我一直卡在这一点上。

在 Postman 中出现此错误(来自 usercontroller.js)

{
"status": false,
"err": {
    "driver": true,
    "name": "MongoError",
    "index": 0,
    "code": 11000,
    "keyPattern": {
        "Email": 1
    },
    "keyValue": {
        "Email": null
    }
}

}

我的 USERCONTROLLER.JS 文件

       //INIT
       const express = require('express');
       const router = express.Router();
        const bodyparser = require('body-parser');
        const bcrypt = require('bcryptjs');
       const {check , validationResult, Result } = require('express-validator');

// MIDDLEWARE SET-UP
      router.use(bodyparser.json());
    router.use(bodyparser.urlencoded({extended: true}));


   // Importing User.js file

      const users = require('../models/user');



   //Laying Routes/Pipes


    // Pipe Number 1)
      router.all('/data',(req,res)=>{
    return res.json({
        status : 'ok'
       });
     });


//Pipe Number 2)
    router.post('/newdata',
    [
        check('username').not().isEmpty().trim().escape(),
        check('password').not().isEmpty().trim().escape(),
        check('body').not().isEmpty().trim().escape(),
        check('email').isEmail().normalizeEmail()
        
    ],
    (req, res)=>{
        
       // This code causes problem
        const errors = validationResult(req);
        if (!errors.isEmpty()) {
            return res.status(422).json({
                status : false,
                errors : errors.array()
            });
        };
        const hashedpass = bcrypt.hashSync(req.body.password, 10);

       
        users.create({
            username : req.body.username,
            password : hashedpass,
            body : req.body.body,
            email : req.body.email,
        },(err,Result)=>{
            if (err) {
                return res.json({
                    status:false,
                    err: err
                })
            };

            return res.json({
                status : true,
                result: Result
            })
        })
    });
        
     //MODEL EXPORT
     module.exports = router; 

我的 User.js 文件

   //INIT
     const mongoose = require("mongoose");

   //User Schema

    const userSchema = mongoose.Schema({
 username : {
    type : String,
    required : true
},
password : {
    type : String,
    required : true
},
body : {
    type : String,
    required : true
},
email : {
    type : String,
    required : true,
    unique: true
 }

  })
     // Creating MODEL

    mongoose.model('users', userSchema);

      // Exporting this Modules is Controller.js file

     module.exports = mongoose.model('users');

我的 index.js 文件

        //**********   INIT  **************

        const express = require('express');
        const app = express();
        const cors = require('cors');
        const mongoose = require('mongoose');
        const assert = require('assert');
        const bodyparser = require('body-parser');
        const morgan = require('morgan');
        const port = 3000;


        //**********   Importing Required Files  **************

        const User = require('../controllers/usercontrollerx');
        app.use('/user', User);
        app.use(bodyparser.urlencoded({
            extended: true
        }));
        app.use(express.json());
        //**********   Connacting to MongoDB  **************

        mongoose.connect('mongodb://127.0.0.1:27017/mongo_test',{
            useCreateIndex : true, useUnifiedTopology: true, useCreateIndex : true , useNewUrlParser : true
        }, (err,link)=>{ 
            // If error
                assert.equal(err, null, "Connection Failed");
            //If connected 
            console.log('----------------------------');
            console.log('Connetion Established')
            console.log('----------------------------');
        });

        //**********   Connacting to Server  **************

        app.listen(port, (req,res)=>{
            console.log('----------------------------');
            console.log('Connect to the Port :' + port)
        })




        //**********   Laying Pipes **************

        app.get('/',(req,res)=>{
            res.send("<a href='/user/newdata'>Go to users</a>");
            
        });



        //**********   Middle Ware SetUp **************

        app.use(morgan('dev'));
        app.use(cors());
        const { json } = require('body-parser');

【问题讨论】:

    标签: node.js arrays database express mongoose-schema


    【解决方案1】:

    错误代码11000 表示已经有一个具有给定值的文档 - 在您的情况下,email 字段的值是 null 的文档。

    您可能希望在email 字段上创建partial index 而不是唯一索引,因为这些索引允许空值,如here 所述。

    【讨论】:

    • 我知道了,有 2 个名为 email_1 和 email_1 的文件,我刚刚删除了索引,它起作用了,谢谢
    • @usmanmughal:很乐意提供帮助,别忘了点击左侧的复选标记接受答案 :)
    • 抱歉,可能是点击失误,我又做了一次:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2021-05-03
    • 1970-01-01
    相关资源
    最近更新 更多