我有以下模型:
const portfolioSchema = new Schema({
profile: {
fname: Schema.Types.Mixed,
lname: Schema.Types.Mixed,
}
language: { type: String, required: true, default: 'fr' },
});
此架构的目标是为EN,IT,FR等语言提供动态键。我希望事情看起来像这样:
profile: {
fname: {
en: 'TOWTOW',
it: 'TOTO',
},
lname: {
en: 'BLABLA',
it: 'BLABLA',
},
etc...
}
我要插入一种新语言(例如FR)的操作如下:
const newLanguage: 'fr';
Portfolio.findById({ _id: portfolioId })
.exec().then((portfolioDB) => {
portfolioDB.profile.fname[newLanguage] = portfolioDB.profile.fname[portfolioDB.language];
portfolioDB.profile.lname[newLanguage] = portfolioDB.profile.lname[portfolioDB.language];
portfolioDB.save((err, updatedPortfolio) => {
if (err) {
return res.send({ success: false });
}
console.log('updatedPortfolio', updatedPortfolio.profile);
return res.send({ success: true, updatedPortfolio });
})
updatedPortfolio的日志是正确的,我可以正确看到插入的新语言密钥。但是不幸的是数据库没有更新。
有人以前遇到过这个问题吗?也许是因为我使用的是混合模式?也许我在请求过程中忘记了什么?奇怪的是,updatedPortfolio具有良好的值,但没有数据库..
感谢您的帮助。