这是我的对象数组:
[
{
ready: true,
body: "Body 1"
},
{
ready: true,
body: "Body 3"
},
{
ready: true,
body: "Body 3"
},
]
现在,如果我要生成模式,通常可以执行以下操作:
const mongoose = require('mongoose');
const { Schema } = mongoose;
const BodySchema = new Schema({
});
mongoose.model('Body', BodySchema);
我需要知道要放在new Schema({});
声明中的内容,这样它才能接受对象数组。
谢谢。
编辑:
这是我格式化数据的方式:
try {
const retrievedFull = await getFullData();
const data = await retrievedFull.map(({ready, body}) => ({
ready,
body
}))
const finalData = new Body(data) //instantiate Schema
return res.status(200).json({
success: true,
data: finalData
})
} catch(err) {
console.log(err);
}
来自getFullData()
的回复:
[
{
ready: true,
body: "Body 1",
other_stuff: "Stuff 1"
},
{
ready: true,
body: "Body 2",
other_stuff: "Stuff 2"
},
{
ready: true,
body: "Body 3",
other_stuff: "Stuff 3"
},
]
因此,基本上,我会剥离所有想要的属性,并创建一个新的对象数组。
答案 0 :(得分:1)
因此,要存储在数据库中的数据是两个简单的属性,可以使用以下模式:
const mongoose = require('mongoose');
const { Schema } = mongoose;
const BodySchema = new Schema({
ready: Boolean,
body: String,
});
const BodyModel = mongoose.model('Body', BodySchema);
关于在数据库内部存储数据的方式:
try {
// Get the data from an external source
const externalData = await getFullData();
// Format the data
const formattedData = externalData.map(({
ready,
body,
}) => ({
ready,
body,
}));
// Insert the data in the database
const databaseData = await BodyModel.insertMany(formattedData);
// Returns the inserted data
return res.status(200).json({
success: true,
data: databaseData,
});
} catch (err) {
console.log(err);
}
的文档
答案 1 :(得分:0)
我会这样定义它:
const BodySchema = new Schema({
data: [{
ready: Boolean,
body: String
}]
});