[英]how to insert array of objects and array of nested objects into mongodb using mongoose in nodejs
我知道已經有類似的問題可用,但所有這些問題都只討論嵌套對象數組,但我的查詢是對象數組,數組中的每個對象都包含嵌套對象。 所以在這種情況下,其他問題對我沒有幫助。
我的查詢是我想在 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 }
知道為什么它會插入空記錄嗎?
@Marventus 的幫助解決了這個問題。
如果您查看我的 json(在我的問題中),它實際上是一個類別數組,每個類別都有自己的子類別,這也是一個數組。 因此,如果您查看下面的架構,我已將 name、value、createdAt、updatedAt 聲明為普通對象而不是數組。 驗證失敗。
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
}
}]
})
工作模式:我已將頂級類別更改為數組並且它有效
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
}
}]
}]
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.