我知道有类似的问题已经可用,但所有这些问题只涉及嵌套对象的数组,但我的查询是对象数组,数组中的每个对象都包含嵌套对象。所以在这种情况下,其他问题对我没有帮助。
我的查询是我想在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
});
});
};
我可以使用上述架构成功保存记录:)
答案 0 :(得分:0)
@Marventus的不时帮助解决了这个问题。非常感谢@Marventus你的时间:)
问题架构:
如果你看看我的json(在我的问题中)它实际上是一个类别数组,每个类别都有自己的子类别,也是一个数组。因此,如果您查看下面的模式,我已将name,value,createdAt,updatedAt声明为普通对象而不是数组。哪个失败了验证。
<?php
$file = fopen("files.txt","r");
while(! feof($file))
{
echo fgets($file). "<br />";
$fileName = fgets($file);
$myfile = fopen($fileName.'.txt, "w");
}
fclose($file);
?>
})
工作架构:我已经将顶级类别更改为数组并且工作正常
var CategorySchema = new Schema({
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
}
}]