首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个mongoose查询

问多个mongoose查询
EN

Stack Overflow用户
提问于 2019-07-03 05:04:25
回答 1查看 46关注 0票数 0

我使用node和mongoose对我的mongodb运行查询。我运行了3个查询,如下所示:

代码语言:javascript
复制
router.put('/user/reset/password/:token',(request,response)=>{
let email = "";
if(!request.params.token){
    return response.status(400).send("Request Parameter Is Missing")
}

if(!request.body){
    return response.status(400).send("Request Body Is Missing")
}

AuthModel.findOne({
    token:request.params.token,
}).then(document =>{
    if(document === null){
        return response.status(401).send("User Naot Found")
    }
    email = document.email;

    let userModel ={
        email:email,
        password:request.body.password
    }

    UserModel.findOneAndUpdate({
        email:email,
    },userModel,{
        new:true
    }).then(document =>{
        if(document === null){
            return response.status(500).send("User not found")
        }
        AuthModel.findOneAndRemove({
            email:email,
        }).then(document =>{
            if(document === null){
                return response.status(500).send("User not found")
            }
            return response.status(200).send(document)
        }).catch(error =>{
            return response.status(500).json(error)
        })
        return response.status(200).send(document)
    }).catch(error =>{
        return response.status(500).json(error)
    })
}) .catch(error =>{
    response.status(500).send(error)
});

});

我觉得我目前的方法相当低效,我想知道是否有有效的方法来实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-04 18:23:11

当然,这可以通过async/await简化并使其更具可读性:

代码语言:javascript
复制
router.put('/user/reset/password/:token', async (request,response) => {
    try {
        if(!request.params.token) return response.status(400).send("Request Parameter Is Missing");
        if(!request.body) return response.status(400).send("Request Body Is Missing");
        const document = await AuthModel.findOne({token:request.params.token,});
        if(!document) response.status(401).send("User Naot Found");
        const { email } = document;
        const userDocument = {
            email,
            password: request.body.password,
        };
        const updateRes = await UserModel.findOneAndUpdate({ email, }, userDocument, { new: true });
        if(!updateRes) return response.status(401).send("User not found");
        const removeRes = await AuthModel.findOneAndRemove({ email, });
        if(!removeRes) return response.status(401).send("User not found");
        return response.status(200).send(document);
    } catch(error) {
        return response.status(500).send(error);
    }
});

ps:你可能需要一些修改,因为我没有机会尝试代码。希望这能有所帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56860034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档