【发布时间】:2018-06-22 17:52:54
【问题描述】:
我知道已经有类似的问题可用,但所有这些问题都只涉及嵌套对象数组,但我的查询是对象数组,并且数组中的每个对象都包含嵌套对象。所以在这种情况下,其他问题对我没有帮助。
我的查询是我想在 nodejs 中使用 mongoose 将以下数据插入 mongodb。
我的 JSON 如下所示
{"categories": [
{
"name": "Books & Magazines",
"value": 1,
"subCategories":[
{
"name": "Book",
"value": 1,
},
{
"name": "Book series",
"value": 2,
}
]
},
{
"name": "Books & Magazines",
"value": 2,
"subCategories":[
{
"name": "Book",
"value": 1,
},
{
"name": "Book series",
"value": 2,
}
]
},
{
"name": "Books & Magazines",
"value": 3,
"subCategories":[
{
"name": "Book",
"value": 1,
},
{
"name": "Book series",
"value": 2,
}
]
}
]
}
我的这个 JSON 的架构如下所示
const mongoose = require('mongoose'),
Schema = mongoose.Schema;
var CategorySchema = new Schema({
categories:[{
name: {
type: String,
required: true,
trim: true
},
value: {
type: Number,
required: true
},
createdAt: {
type: Date,
default: Date.now
},
updatedAt: {
type: Date,
default: Date.now
},
subCategories: [{
name: {
type: String,
required: true,
trim: true
},
value: {
type: Number,
required: true
}
}]
}]
})
module.exports = mongoose.model('Page_Categories', CategorySchema);
控制器部分如下
const Page_Categories = require('../models/categories');
exports.savePageCategories = function (req, res, next) {
const data = req.body;
// console.log("Data: ", data.categories)
const pageCategories = new Page_Categories({ data });
console.log("pageCategories: ", pageCategories)
pageCategories.save((err, post) => {
if (err) { return next(err); }
res.status(201).json({
user: post
});
});
};
我能够成功保存,但它保存为空记录。请看下文
{ "_id" : ObjectId("5a5ae9e7855059417c471784"), "categories" : [ ], "__v" :
0 }
知道为什么它会插入空记录吗?
【问题讨论】:
-
您是否尝试为您的 SubCategories 属性指定类型?:
[{type: SubCategories}]。如果需要 So,您也可以使用required: true进行设置。 -
按照您的建议更新了我的架构。你能告诉我如何在控制器中将该请求 json 设置为 PageCategories 模式吗?这是我觉得困难的地方。
-
假设您的请求数据在
req.body.data中,尝试将您的data常量传递给 pageCategories 实例化:new pageCategories(data)。 -
我试过了,但验证失败。 ValidationError:Page_Categories 验证失败:值:路径
value是必需的。名称:路径name是必需的 -
对不起,我没有意识到。尝试删除
.add部分:CategorySchema.add(... 并将您的CategorySchema中的SubCategories: {type: SubCategories, required: true}更改为:SubCategories: [{type: SubCategories, required: true}]。
标签: javascript node.js mongodb mongoose