使用nodeJS

时间:2018-09-11 11:59:42

标签: node.js mongodb mongoose model

我有以下模型:

 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具有良好的值,但没有数据库..

感谢您的帮助。

0 个答案:

没有答案