我必须从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值。
不能弄错我了吗?
答案 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的请求时,这不起作用