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



我是NodeJS的新手,我试图创建一个api,它将一次删除多个用户。我知道如何删除单行/用户,但卡在多行/用户上。

这是我为单个用户所做的

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('/');
  });
};

谁能帮我解决这个问题。

有一个简单的方法可以做到这一点。您可以直接在模型上使用"IN"运算符

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

注意:您不应该将循环用于 delele,这不是一个好的做法。

猫鼬 - 模型.删除

假设您有一个用户 ID 数组,例如 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('/');
  });

从外观上看,我猜你正在使用mongoose

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

Remove in mongo 会删除与您的查询匹配的所有记录。如果您使用 mongo 驱动程序并使用 db.User.remove({}) .顺便说一句,根据您可以使用deleteMany运行查询
的文档

更新萨加尔的解决方案是绝对正确的。如果您正在考虑删除多个 ID,您可以使用$in,如果您正在考虑删除不同属性中的记录,您可以使用$or查询

最新更新