我是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('/');
});
};
任何人都可以帮我解决这个问题。
答案 0 :(得分:6)
有一种简单的方法。你可以直接在模型上使用' IN '运算符
User.remove({'_id':{'$in':[array_of_id]}})
注意:你不应该使用循环来删除,这不是一个好习惯。
答案 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数组。
Remove
会删除与您的查询匹配的所有记录。如果您使用mongo驱动程序使用db.User.remove({})
,这也适用。顺便说一下docs您可以使用deleteMany
来运行查询
<强>更新强>
Sagar的解决方案绝对正确。如果您要删除多个ID,可以使用$in
,如果您要查看删除不同属性的记录,可以使用$or
查询