【问题标题】:Mongo api POST with missing fieldsMongo api POST 缺少字段
【发布时间】:2018-01-22 06:06:20
【问题描述】:

我的 JSON 对象中的字段没有被 Mongo 在 api 调用中插入。我想我误解了 JSON 测试数据中的对象需要命名的内容。我已经尝试过非常组合“ToDo”、“todo”等,但无济于事。

我正在尝试这个tutorial for building a MEAN stack app。但是,我已经设法在 Postman POST 测试调用的主体中使用此 JSON 对象来构建它

"todo": {
    title: "TaskTitle",
    description: "TaskDescription",
    status: "Not assigned"
}

当我在 Postman 中通过 POST 进行测试时,当我在 Robo 3T 中查看新创建的对象时,仅填充了 _id、date 和 __v 字段。

我期待看到_id、date、__v、title、description 和 status 出现在 Robo 3T 中。

我的模型如下所示:

var mongoose = require('mongoose')
var mongoosePaginate = require('mongoose-paginate')


var ToDoSchema = new mongoose.Schema({
    title: String,
    description: String,
    date: Date,
    status: String
})

ToDoSchema.plugin(mongoosePaginate)
const ToDo = mongoose.model('Todo', ToDoSchema)

module.exports = ToDo;

并且进行发布本身的控制器显示请求正文未定义,即;

exports.createTodo = async function(req, res, next){
    // Req.Body contains the form submit values.
    console.log(toString(req.body.title));//----shows as [object Undefined] in console
    var todo = {
        title: req.body.title,
        description: req.body.description,
        status: req.body.status
    }

    try{

        // Calling the Service function with the new object from the Request Body

        var createdTodo = await TodoService.createTodo(todo)
        return res.status(201).json({status: 201, data: createdTodo, message: "Succesfully Created ToDo"})
    }catch(e){

我试过other SO posts,但没有用......

【问题讨论】:

  • 你在使用 Express 吗?

标签: node.js mongodb rest mean-stack


【解决方案1】:

这不是一个有效的 JSON:

"todo": {
    title: "TaskTitle",
    description: "TaskDescription",
    status: "Not assigned"
}

这些是:

{
    "todo": {
        title: "TaskTitle",
        description: "TaskDescription",
        status: "Not assigned"
    }
}

和

{
    title: "TaskTitle",
    description: "TaskDescription",
    status: "Not assigned"
}

【讨论】:

  • 你从console.log(req.body);得到什么输出
  • console.log(toString(req.body.title));//----在控制台显示为[object Undefined]
  • 这不是同一行:console.log(req.body);
  • console.log(req.body);给出 [object Object]
  • 非常感谢您的支持...问题是使用 Postman 进行测试并且正文格式为“文本”,而不是“JSON(应用程序/json)”问题已解决...哇!
【解决方案2】:

@MondKin 非常感谢您的支持...问题是使用 Postman 进行测试并且正文格式为“文本”,而不是“JSON(应用程序/json)”

问题解决了……哇!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 2016-06-09
    相关资源
    最近更新 更多