发布请求:通过猫鼬中的数组发送值

时间:2020-03-10 04:21:41

标签: node.js mongodb mongoose mongoose-schema

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

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 })});

  };

所以我的邮递员为source_url和abstract抛出id值。

Postman image

不能弄错我了吗?

2 个答案:

答案 0 :(得分:0)

该问题仅在构建新的猫鼬对象中正确。在这里,您将 source_url 抽象称为 req.body.source_url req.body.abstract ,这是错误的因为这些内容不直接位于您请求的对象的主级别下,而仅位于local_parameters的第一个数组元素下。改变这一点应该有所帮助。这里的问题是,这些值会随着未定义的值消失,并且猫鼬会删除未定义的值。

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 }
  ]
});

答案 1 :(得分:0)

如果我还有另一个子数组该怎么办。

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的请求时,这不起作用