【问题标题】:My post request of todos1 is showing bad request?我的 todos1 发布请求显示错误请求?
【发布时间】:2018-02-18 13:37:37
【问题描述】:

谁能告诉我我对 todos1 的 post 请求显示错误请求正确的数据到我的数据库,这意味着我的 req.send 函数在某个地方出错了谁能告诉我我错在哪里???

const lodash=require('lodash');
var express=require('express');
var bodyparser=require('body-parser');
var mongoose=require('mongoose');
var {app1}=require('./todos');
var {ObjectId}=require('mongodb');

mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost:27017/TodoApp');
var port=process.env.PORT || 3000;
var app=express();
app.use(bodyparser.json());

app.post('/todos',(req,res)=>
{
    var todo=new app1({
        text:req.body.text,
        email:req.body.email
    });
    todo.save().then((docs)=>
    {
        res.send(docs);
    },(err)=>
    {
        res.status(400).send(err);
    });
});

app.get('/todos',(req,res)=>
{
    app1.find().then((todos)=>{
        res.send({
            todos
        })
    },(err)=>
    {
        res.status(400).send(err);
    });
});

app.get('/todos/:id',(req,res)=>
{
    var id=req.params.id;
    if(!ObjectId.isValid(id))
    {  var text1='No id is found';
        res.status(404).send({text1});
    }

        app1.findById(id).then((todos)=>
        {
            if(todos)
            {
                res.send(todos);
            }
            else
            {
                res.status(404).send();
            }
        },(err)=>
        {
            res.status(400).send(err);
        });
});
app.patch('/todos/:id',(req,res)=>
{
    var id=req.params.id;
    var body=lodash.pick(req.body,['text','completed']);
    if(!ObjectId.isValid(id))
    {
        var text1="no id is found";
        return res.status(404).send({text1});
    }
    if(lodash.isBoolean(body.completed) && (body.completed))
    {
     body.completedBy=new Date().getTime();
    }
    else
    {
        body.completed=false;
        body.completedBy=null;
    }

    app1.findByIdAndUpdate(id,{$set:body},{new:true}).then((todos)=>
    {
        if(todos)
        {
            return res.send(todos);
        }
        else
        {
            res.status(404).send();
        }
    },(err)=>
    {
        res.status(400).send(err);
    });
});

app.delete('/todos/:id',(req,res)=>
{
    var id=req.params.id;
    if(!ObjectId.isValid(id))
    {
        var text1='No id is found';
        return res.status(404).send({text1});
    }
    app1.findByIdAndRemove(id).then((todos)=>
    {
        if(todos)
        {
            return res.send(todos);
        }
        else
        {
            res.status(404).send();
        }
    },(err)=>
    {
        res.status(400).send(err);
    });
    }
);
app.post('/todos1',(req,res)=>
{
    var body=lodash.pick(req.body,['email','password','text']);
    var user=new app1(body);
    user.save().then(()=>
    {
        return user.generateAuthToken();
        }).then((token)=>
        {
            res.header('x-auth',token).send(user);
        }).catch((e)=>
        {
            res.status(400).send(e);
        });
});

app.listen(port,()=>
{
    console.log(`Starting port ${port}`);
});

module.exports={app};

【问题讨论】:

  • 只需在res.status(400).send(err); 之前登录err 即可了解发生了什么。承诺失败并到达catch

标签: node.js


【解决方案1】:

很难准确理解您的意思,但如果 user.save() 正在工作并且您在数据库中看到新文档,那么 user.generateAuthToken() 一定是失败的。

邮递员应该向您显示错误的响应,但如果没有,只需在服务器端记录错误。

【讨论】:

    猜你喜欢
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2018-11-28
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多