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

我是NodeJS的新手。我试图创build一个API,这将删除多个用户在一个go.I知道如何删除单行/用户,但卡住了多个。

这是我为单个用户所做的

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]}}) 

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

mongoose – Model.remove

假设你有一个用户ID数组说uidArr

第一种方法

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

第二种方法使用asynchronousstream程库

 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}) ,其中remove内的对象是将要应用的查询。 req.params.id是一个req.params.id的数组。

在mongo中删除将删除与您的查询匹配的所有logging。 这也适用于使用db.User.remove({})使用mongo驱动程序的情况。 顺便说一句,根据文档,你可以使用deleteMany来运行你的查询

更新萨加尔的解决scheme是绝对正确的。 如果您正在考虑删除多个ID,则可以使用$in ,如果您正在查看以不同属性删除logging,则可以使用$or query