首页 > 解决方案 > 用 Javascript 中的键值对重构对象数组并输出或发出它以用 mongoose 和 MongoDB 保存它?

问题描述

我是 JS 新手,使用 node.js、express 和 mongoose,并且有一个带有随机且不可预测的键值对的传入数组。

 // Example
 const simpleArray = {
      d: "h",
      e: "i",
      f: "j",
      g: "k",
    };

我需要重组这个数组以便将它推送到我的 Mongo 数据库中。所以上面重构示例的结果需要如下所示:

// Restructured example
user.details.d.push({name:"h", date: Date.now(),});
user.details.e.push({name:"i", date: Date.now(),});
user.details.f.push({name:"j", date: Date.now(),});
user.details.g.push({name:"k", date: Date.now(),});

// After this restructering, I like to push it to the user database:
const user = await User.findById(userId);
await user.save();

我花了几个小时来重组 simpleArray 并最终得到一个选项:

for (const [key, value] of Object.entries(basis)) {
      console.log(
        `user.details.${key}.push({name:"${value}", date: Date.now(),});`
      );
    }

问题:我不喜欢将它记录到控制台。我必须在'await user.save();'之前提供它。如果我用 return 替换 console.log(),它突然就不再工作了。做什么,它可用于 'await user.save();' 并将其存储在数据库中??我搜索了很多,并且经常使用 console.log() 代替进一步使用代码的实用方法。

最后它应该像这样工作:

// Example
     const simpleArray = {
          d: "h",
          e: "i",
          f: "j",
          g: "k",
        };

//Loop
     for (const [key, value] of Object.entries(basis)) {
          console.log(
            `user.details.${key}.push({name:"${value}", date: 
     Date.now(),});`
            );
          }
//Result
//user.details.d.push({name:"h", date: Date.now(),});
//user.details.e.push({name:"i", date: Date.now(),});
//user.details.f.push({name:"j", date: Date.now(),});
//user.details.g.push({name:"k", date: Date.now(),});



// Push to database
     const user = await User.findById(userId);
     await user.save();

标签: javascriptnode.jsarraysobjectmongoose

解决方案


我有工作解决方案:

 // Loop over random array
    Object.keys(simpleArray).forEach((item) => {
            user.details[item].push({
            name: simpleArray[item],
            date: Date.now(),
          });
        });

推荐阅读