首页 > 解决方案 > 如何在 Node Js 中更改 User isActive:boolean 的值

问题描述

具有 isActive:Boolean 的用户模型

单击按钮时重定向到路由并从参数中查找具有 id 的用户。

找到用户后,它会检查 isActive 的值。

如果值不为真,则将其更改为假,或者如果值为真,则将其更改为真

<form action="/admin/user/<%= user._id %>/status?_method=PUT" method="POST">
    <button type="submit" class="btn btn-success btn-group-sm"><i class="fas fa-check-circle"></i></button>
</form>

将请求作为 PUT 发送到路由的按钮

const mongoose = require("mongoose");
const passportLocalMongoose = require("passport-local-mongoose");


const UserSchema = mongoose.Schema({
    name: String,
    mobile: String,
    gender: String,
    username: String,
    password: String,
    isActive: {
        type: Boolean,
        default: true
    },
    created: {
        type: Date,
        default: Date.now()
    }
});

UserSchema.plugin(passportLocalMongoose);

const User = new mongoose.model("user", UserSchema);

module.exports = User;

查找和更改 isActive 值的路由

router.put("/admin/user/:id/status", (req, res) => {
    User.findById(req.params.id, (err, foundUser) => {
        console.log(foundUser.isActive);
        if (err) {
            console.log(err);
        } else if (foundUser.isActive == false) {
            User.update({_id: req.params.id}, {$set: {isActive: true}});
            res.redirect("/admin/users-details");
        } else {
            User.update({_id: req.params.id}, {$set: {isActive: false}});
            res.redirect("/admin/users-details");
        }
    });
});

标签: javascriptnode.jsmongodbexpressmongoose

解决方案


尝试等到更新过程在重定向页面之前抛出结果,通过示例您可以看到尝试更新记录时会发生什么:

router.put("/admin/user/:id/status", (req, res) => {
    User.findById(req.params.id, (err, foundUser) => {
        console.log(foundUser.isActive);
        if (err) {
            console.log(err);
            return res.redirect("/admin/users-details?error=" + err.toString());
        }
        User.update({ _id: foundUser._id }, { $set: { isActive: !foundUser.isActive } }, (err2, result) => {
            console.log(err, result);
            res.redirect("/admin/users-details");
        });
    });
});

推荐阅读