Post 请求:在 Mongoose 中通过数组发送值

Post Request: Sending values through arrays in Mongoose

我必须向 Mongoose 发送一些值的 post 请求。我的模型文件如下:

const local_lr_urllog_schema = new Schema(
    {       
        domain_name:{
           type: String
        },

        comment:{
            type: String
        },
        local_parameters:[
            {
                source_url: String,
                abstract:String,
                non_abstract: String   
            }
    ],


    }
);

//Export model
module.exports = mongoose.model('Addlogurl', local_lr_urllog_schema);

我的控制器如下:

const add_records = async (req, res) => {


     const records = new Addlogurl({

        domain_name:req.body.domain_name,

        comment:req.body.comment,
        local_parameters:[{source_url: req.body.source_url, abstract: req.body.abstract}]
  });




  try {
    await records.save();
  } catch (err) {

    return next(errors);
  } //res.status(messages.status.OK).json(list);
  res.status(messages.status.OK).json({records: records.toObject({ getters: true })});

  };

所以我的 post 人抛出 source_url 和摘要的 id 值。

Postman image

不知道哪里出错了?

问题只出在新的mongoose对象的构造上。在这里,您将 source_urlabstract 称为 req.body.source_urlreq.body.abstract,这是错误的,因为它们并不直接位于请求对象的主层之下,而是仅位于 local_parameters 的第一个数组元素之下。改变它应该有所帮助。这里的问题是这些值会随着 undefined 和 undefined 值被 mongoose 删除而消失。

const records = new Addlogurl({
  domain_name: req.body.domain_name,

  comment: req.body.comment,
  local_parameters: [
    { source_url: req.body.local_parameters[0].source_url, abstract: req.body.local_parameters[0].abstract }
  ]
});

如果我有另一个子数组怎么办..

local_parameters: [ { source_url: req.body.local_parameters[0].source_url, abstract: req.body.local_parameters[0].abstract } ], 

remote_parameters: [ { destination_url: req.body.local_parameters[0].destination_url, abstract_des: req.body.local_parameters[0].abstract_des} ].

当我发送 remote_parameters

的请求时,这不起作用