【发布时间】:2018-09-11 14:08:28
【问题描述】:
所以我一直在努力向我的 MongoDB 发出 POST 请求,因为其中一个属性应该是一个对象数组。我一直在关注不同的教程,但仍然无法理解它。
我有一个数组,它是一个对象数组。
tagsArray = [
{ tag_name: "Tiger", ref: "t" },
{ tag_name: "Cheetah", ref: "c" }
];
我使用 Fetch API 发布它,因为它包含一个图像文件,所以我使用 formData。这就是我发布它的方式......
let formData = new FormData();
formData.append('titleImage', this.state.titleImage);
for (var i = 0; i < tagsArray.length; i++) {
formData.append('tags', JSON.stringify(tagsArray[i]));
}
var request = {
body: formData,
method: "POST"
}
fetch("http://localhost:3500/posts", request)
.then(res => res.json())
.then(json => {
console.log("Post success:", json);
})
.catch(function(err) {
console.log(err.message);
});
继续,我创建了一个架构,您可以在这里看到:
const mongoose = require('mongoose');
const tagSchema = mongoose.Schema({
tag_name: String,
ref: String
})
const postSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
titleImage: { type: String, required: true },
tags: { type: [tagSchema], required: true},
});
module.exports = mongoose.model('Post', postSchema);
这就是我一直试图将它保存到我的数据库的方式。
exports.create_post = (req, res, next) => {
const post = new Post({
_id: new mongoose.Types.ObjectId(),
titleImage: req.file.path,
tags: req.body.tags,
});
post.save().then(result => {
res.status(201).json({
post: {
_id: result._id,
tags: result.tags
}
});
})
.catch(err => {
console.log(err);
res.status(500).json({
error: err
});
});
}
这是控制台中记录的错误。
消息:'转换为数组失败,值“[ \'{"tag_name":"Tiger","ref":"t"}\',\n \'{"tag_name":"Cheetah","ref":"c"}\' ]" 在路径 "tags"', 名称:'CastError', stringValue: '"[ \'{"tag_name":"Tiger","ref":"t"}\',\'{"tag_name":"Cheetah","ref":"c"}\' ]"', 种类:'数组', 值:[数组], 路径:'标签', 原因:[对象] } },_message:'后验证失败',名称:'ValidationError' }
【问题讨论】: