猫鼬模式中的对象数组问题
Posted
技术标签:
【中文标题】猫鼬模式中的对象数组问题【英文标题】:Problem with array of objects in mongoose schema 【发布时间】:2019-08-21 20:16:58 【问题描述】:我对基于 node express 的 rest api 和 mongodb 的 mongoose 有问题我认为我对嵌套对象数组的 mongoose 模式有问题
我尝试了控制台日志 req.body 并且有数据,但是当我使用新的 mongoose 架构时,会有空数组
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const TranslationSchema = new Schema(
name:
type: String,
required:true
,
description:
type: String
,
laguage_code:
type: String,
required:true
,
)
const ImagesSchema = new Schema(
name:
type: String
,
file_id:
type: String
)
const RecipeSchema = new Schema(
user:
type: Schema.Types.ObjectId,
ref: 'users'
,
translations:[TranslationSchema],
date:
type: Date,
default: Date.now
,
images:[ImagesSchema]
)
module.exports = Recipe = mongoose.model("recipes", RecipeSchema);
和api
router.post(
'/',
passport.authenticate('jwt', session:false ),
(req,res) =>
const newRecipe = new Recipe(
user: req.user.id,
translations:req.body.translations,
images:req.body.images
)
console.log(req.body)
console.log(newRecipe)
// newRecipe.save().then(recipe => res.json(recipe))
)
console.log req.body 我有
[Object: null prototype]
images: '[name:\'test\', file_id:\'asd\']',
translations: '[name:\'asd\', laguage_code:\'pl\']'
但是在 console.log(newRecipe)
_id: 5ca0cc632314cd4368bf42dd,
user: 5c569f603e811118c83c80d1,
translations: [],
date: 2019-03-31T14:19:15.788Z,
images: []
我做错了什么?
【问题讨论】:
images: '[name:\'test\', file_id:\'asd\']',
这是一个“字符串”而不是数组。这确实是发送 POST 请求发送格式错误数据的问题。请注意,您甚至不能JSON.parse()
this,因为键没有正确引用。最好检查提交数据的来源。正确提交时,console.log(JSON.stringify(req.body, undefined, 2))
的结果应该看起来像 images: [ name: 'test', file_id: 'asd' ]'
。
【参考方案1】:
在您的Recipe
模型中,您也将translations
和images
定义为猫鼬模型。所以尝试导出这些模型并构建它们。例如:
const translations = new Translation(req.body.translations);
const images = new Image(req.body.images);
然后尝试以这种方式创建模型:
const newRecipe = new Recipe(
user: req.user.id,
translations:translations,
images:images
)
我希望我能告诉你如何尝试找到你的解决方案。
【讨论】:
以上是关于猫鼬模式中的对象数组问题的主要内容,如果未能解决你的问题,请参考以下文章