我想保存 1 个文档,其中包含多个子文档。在本例中,文档名为“Scores”,子文档包含“Player: x, Score: y”。我正在使用 mongoose 和 nextjs
这是我的架构:
import { Schema, model, models } from "mongoose";
const ScoreSchema = new Schema({
creator: {
type: Schema.Types.ObjectId,
ref: 'User',
},
scores_to_save: [
{
player: { type: String },
score: { type: String }
}
]
});
const Score = models.Score || model( 'Score', ScoreSchema );
export default Score;
这是我的 API 路由器:
import { connectToDB } from "@utils/database";
import Score from "@models/score";
export const POST = async ( req ) => {
const { userId, scores } = await req.json();
try {
await connectToDB();
const newScores = new Score({
creator: userId
});
// Manually data insert for now, just for testing
newScores.scores_to_save = [
{ player: 'my name', score: '5' },
{ player: 'your name', score: '6' }
];
console.log('TO SAVE Document: ', newScores );
await newScores.save();
return new Response( JSON.stringify( newScores ), { status: 201 } );
} catch (error) {
return new Response( "Failed to create a new Scores.", { status: 500 } );
}
}
console.log('要保存文档:', newScores );回报:
TO SAVE Document: {
creator: new ObjectId("652af415729e8d8a59b2202f"),
_id: new ObjectId("6532cfcd4c76ca7d258d3f0d")
}
完全忽略“newScores.scores_to_save”部分。
我根本没有收到任何错误,但保存到数据库中的唯一内容是“creator”和“_id”值,
我缺少什么?
提前致谢!
好吧,我终于弄清楚问题出在哪里了。看起来模型架构的结构发生任何更改后,我们需要重新启动本地服务器。
所以,我只需关闭终端,再次打开它并运行
npm run dev
。
之后,一切都按预期开始工作。
console.log('TO SAVE Document: ', newScores );
现在返回:
TO SAVE B: {
creator: new ObjectId("652af415729e8d8a59b2202f"),
_id: new ObjectId("6533cd6cfbefe01889fd22e7"),
scores_to_save: [
{
player: '652f36c9f6ad40c3aedf0cdf',
score: '777',
_id: new ObjectId("6533cd6cfbefe01889fd22e8")
},
{
player: '652f3470729e8d8a59b221dd',
score: '666',
_id: new ObjectId("6533cd6cfbefe01889fd22e9")
}
]
}
请注意,我现在也在传递真实数据。
谢谢大家!