我是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
查询