【问题标题】:I'm not sure how to delete a user using MongoDB我不确定如何使用 MongoDB 删除用户
【发布时间】:2022-02-09 01:52:11
【问题描述】:

如果用户选择删除他们的帐户,我正在尝试删除他们。我不确定它是如何正确完成的。这是删除功能的代码。我查看了其他 StackOverflow 解决方案,但我还不能掌握这个概念。谁能帮忙?

const { validationResult } = require('express-validator')
const User = require('../modelSchema/User')
const mongo = require('mongodb')

const signUp = (req, res) => {
    
    const errors = validationResult(req)
    if(!errors.isEmpty()) return res.status(400).json({ errors: errors.array()})

    //new instance of user
   const user = new User({ 
    name: req.body.name, 
    email: req.body.email, 
    password: req.body.password })

    //save the user 
  user.save()
  .then(data => {
      res.json(data)
      res.send('User added successfully!')
      console.log(data)
  })
  .catch(err => {
      res.status(400).json(err)
  })

}

const deleteUser = (req, res) => {

    let id = req.params.id;
    User.get().createCollection('user', function ( col) {
     col.deleteOne({_id: new mongo.ObjectId(id)});
    });
    res.json({ success: id })
    res.send('User Deleted Successfully!')
    .catch(err => {
        res.status(400).json(err)
    })
}

module.exports = { signUp, deleteUser }

这是我正在使用的路线

const express = require('express');
const { check } = require('express-validator')
const { signUp, deleteUser } = require('../controllers/users');

const router = express.Router();

router.post('/signup', [
    check('name', 'Please Enter your Name').not().isEmpty(),
    check('email', 'Please Enter your Email').isEmail(),
    check('password', 'Please Enter your Password').isLength({ minLength: 6})
], signUp)

router.delete('/delete/:id', deleteUser)

module.exports = router;

这是我的架构

const mongoose = require('mongoose');

let userSchema = new mongoose.Schema({
    name: { type: 'string', required: true},
    email: { type: 'string', required: true},
    password: { type: 'string', required: true},
    date: { type: Date, default: Date.now}
})

module.exports = mongoose.model('user', userSchema)

【问题讨论】:

  • 你有没有试过await你调用数据库的结果?
  • 不,我没有尝试这样做。我是一个初学者,并且仍在学习我的方法。

标签: node.js mongodb express mongoose


【解决方案1】:

如下更新您的删除功能

const deleteUser = async (req, res) => {
  const { id } = req.params;
  const user = await User.findByIdAndDelete(id);
  if (!user) {
    return res.status(400).json("User not found");
  }
  res.status(200).json("User deleted successfully");
};

findByIdAndDelete 获取要删除的用户的 ObjectId。如果用户存在,则删除用户并返回用户文档,否则返回null;

【讨论】:

    猜你喜欢
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 2021-10-17
    • 2018-11-21
    • 2015-10-22
    • 2023-02-08
    相关资源
    最近更新 更多