node.js - Id 没有从嵌套数组中删除

标签 node.js mongodb express mongoose mongoose-schema

您好,我正在尝试从文档中删除嵌套数组对象id,但它没有被删除。虽然我收到消息“已删除”

我有一个回复,其结构是:-

{
    "admins": {
        "users": [
            "5d0364048db4957100f33fea" //<===want to delete this relational id
        ],
        "email": "1cf1eede89@himail.online",
        "password": "$2a$10$vHyGxX9P.t0/ybKcmIzkc.ZCX18oHaVnvTgJIWA2gTNzJ3TCdXS4a",
    "_id": "5d0339d5b4b28b6ddff06802",
    "companyName": "GH",
    "__v": 0
}

我想从数组中删除users _id

我尝试过这个,但它没有被删除。

router.delete('/userDelete/:uId', checkAuth , (req, res, next) =>{
    if(req.userData.role2 === 'admin') {
        Admin.findOneAndUpdate({ _id: req.params.userId },{ $pull: { 'admins.users': req.params.uId}}) 
        .exec()
        .then(result => {
            res.status(200).send(["Deleted"]);
        })
        .catch(err =>{
        if (err.code == 500)
                    res.status(500).send(["Didn't get deleted"]);
        else
            return next(err);
        });

Controller 是这样的:-

var admin = new Admin();
    admin.companyName = req.body.companyName;
    admin.admins = {
                    email : req.body.email,
                    password: req.body.password,
                    users : [] 
    };

我被困在这里,我必须对路线进行哪些更改?

编辑:-数据库是这样的 DB

最佳答案

问题就在这里Admin.findOneAndUpdate({ _id: req.params.userId }

req.params.userId未定义,因为它在您的路径中不存在。 req.params 对象仅包含一个属性,uId。 所以您的查询没有找到任何数据。
如果您的方法路由具有类似于 router.delete('/userDelete/:userId/:uId) 的形式,req.params.userId 就会有值(value)。
因此,您可以在删除请求的 url 中添加 userId 并通过 req.params 对象访问它。新的网址应该是这样的

/userDelete/userId/uId

(例如)

userDelete/5d0339d5b4b28b6ddff06802/5d0364048db4957100f33fea

关于node.js - Id 没有从嵌套数组中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56630424/

相关文章:

javascript - 获取支持的货币列表

mongodb - 为什么我在 Heroku 上列出的 MongoDB 数据库 URI 有副本集选项,而在 MongoLab 上列出的没有?

node.js - Express 和 Socket.io - 最佳实践

node.js - Mongodb 只获取符合条件的子文档

java - 从 Java 发送数据并在 Node.js 应用程序中接收

node.js - 在 Windows 10 上使用 Dell Encryption 软件加密的目录中的 npm 安装失败

node.js - Angular 如何在组件中使用嵌入脚本

r - 在 R 中通过 SSH 连接到 MongoDB

mongodb - 如何在nodejs中连接后获取mongodb数据库基名?

javascript - Express JS - 从 mysql 删除条目