使用NodeJS删除数据库中的多个用户

时间:2017-10-16 11:51:13

标签: node.js mongodb express mongoose

我是NodeJS的新手。我正在尝试创建一个api,它会在一次go中删除多个用户。我知道如何删除单个行/用户但却陷入了多个用户。

这就是我为单个用户所做的事情

var User = require('../models/User');
var moment = require('moment');
var jwt = require('jwt-simple');
var config = require('../config');


function createJWT(user) {
  var payload = {
    sub: user._id
    , iat: moment().unix()
    , exp: moment().add(14, 'days').unix()
  };
  return jwt.encode(payload, config.TOKEN_SECRET);
}

exports.createUser = function (req, res, next) {
  var user = new User(req.userData);
  user.save(function (err, result) {
    if (err) {
      res.status(500).send({
        message: err.message
      });
    }
    if(result.status == 'unverified')
      return next();
    else
      res.send({
        token: createJWT(result),
        user : user
      });
  });
};

exports.removeUser = function(req, res){
  User.findById(req.params.id).remove(function(){
    res.redirect('/');
  });
};

任何人都可以帮我解决这个问题。

3 个答案:

答案 0 :(得分:6)

有一种简单的方法。你可以直接在模型上使用' IN '运算符

User.remove({'_id':{'$in':[array_of_id]}})

注意:你不应该使用循环来删除,这不是一个好习惯。

  

Mongoose - Model.remove

答案 1 :(得分:1)

  

假设你有一个userIDs数组说uidArr

第一种方法

User.remove({'_id':{'$in':uidArray}})

使用异步流程库的第二种方法

const async=require('async');
async.forEach(uidArray, function (uid, callback) {
  User.findById(uid).remove(function(err){
  err ? callback(err) : callback(null);
  });
  },function(err) {
    if (err)
      return res.status(400).send(err);
    else
     return res.redirect('/');
  });

答案 2 :(得分:0)

从表面上看,我猜你在使用mongoose

无论如何,如果您使用User.remove({_id: req.params.id}),其中remove内的对象是将应用的查询。 req.params.id是一个user_ids数组。

mongo中的

Remove会删除与您的查询匹配的所有记录。如果您使用mongo驱动程序使用db.User.remove({}),这也适用。顺便说一下docs您可以使用deleteMany来运行查询

<强>更新 Sagar的解决方案绝对正确。如果您要删除多个ID,可以使用$in,如果您要查看删除不同属性的记录,可以使用$or查询