使用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