javascript - 用 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();
解决方案
我有工作解决方案:
// Loop over random array
Object.keys(simpleArray).forEach((item) => {
user.details[item].push({
name: simpleArray[item],
date: Date.now(),
});
});
推荐阅读
- python - 如何通过 gc.get_objects() 查找导致内存泄漏的新创建的对象
- python - 类方法不会返回任何东西
- parity - 奇偶校验位公式的逆向工程
- flutter - Flutter ListView 和 ListView.builder 问题
- javascript - 如何从子组件 ReactJS 更新父状态
- angular - Angular/Typescript 正则表达式函数失败
- flutter - Flutter:如何禁用特定过渡的英雄动画
- r - 如何用其他列的值估算多列中的 NA?
- javascript - 为什么 JS 在 HTML 中显示“未定义”
- php - PHP函数根据条件返回数组