【问题标题】:Mongoose upload of posted object failing发布对象的猫鼬上传失败
【发布时间】:2019-12-03 21:13:12
【问题描述】:

我是 nodeJS 的新手,简单的发布数据上传到 Mongo 失败。我的连接正常。如果我输入代码:

var itemOne = steTodo({task: 'something', date: 'something', status: 
'something' }).save(function(err)
   {
       if(err) throw err;
       console.log('Item saved');
   });

这可以工作并插入一条记录。

但是,如果我尝试以这种方式上传发布的数据:

app.post('/', urlencodedParser, function(req, res)
    {
        res.render('index', {data: req.body});
        console.log(req.body);
       //get data from the view and add it to mongodb

       var newSteTodo = steTodo(req.body).save(function(err, data)
       {
            if(err) throw err;
            console.log("Item Saved" + req.body)
            //res.json(data);
       });
    });

它失败并告诉我它未能将对象呈现为字符串。当我添加 JSON.stringify() 发布的对象时,它没有帮助。上面的 Console.log 将发布的对象输出为例如下面:

[Object: null prototype] {
  task: 'hello',
  date: 'Thu Jul 25 2019 14:55:42 GMT+0100 (Irish Standard Time)',
  status: 'New' }

由于我是 Node 的新手,我确信我在做一些愚蠢的事情,感谢任何帮助。

【问题讨论】:

  • 您收到的数据不是 JSON 格式。如果您使用的是 bodyParser 包,您可以简单地执行 bodyParser.json() 将 incming 数据转换为 JSON
  • 感谢您的回复。我试过了: var jsonParsed = bodyParser.json(req.body);但我收到一条错误消息,提示“正文已解析”。我现在更困惑了:/
  • 你的路由中的 urlencodedParser 是什么?

标签: node.js mongodb mongoose ejs


【解决方案1】:

非常感谢 Shivam Sood 帮助我进行调试,这非常有帮助。原来只是我傻。它实际上是在创建数据库记录。但是上传后它导致节点应用程序崩溃,这与console.log的格式有关。解决方案如下使用 JSON.stringify

app.post('/', urlencodedParser, function(req, res)
    {
        res.render('index', {data: req.body});
        console.log(req.body);
       //get data from the view and add it to mongodb

       var newSteTodo = steTodo(req.body).save(function(err, data)
       {
            if(err) throw err;
            console.log("Item Saved" + JSON.stringify(req.body))
            //res.json(data);
       });
    });

【讨论】:

  • 很高兴它成功了,如果你不介意请更正我的名字谢谢:)
猜你喜欢
  • 2017-01-16
  • 2019-08-28
  • 2019-06-09
  • 1970-01-01
  • 2021-10-25
  • 2016-02-14
  • 2012-11-02
  • 1970-01-01
  • 2020-07-27
相关资源
最近更新 更多