【发布时间】:2023-03-21 21:32:01
【问题描述】:
如何以更优雅的方式编写此代码。我查看了 lodash 等,但实际上找不到根据我的需要解构对象的最佳方法。 因为我会在 mongo 上写这些属性,所以我也尝试验证它们是否存在。
const { _id, name, bio, birth_date, photos, instagram, gender, jobs, schools } = element
let myPhotos = photos.map((photo) => photo.id)
let insta = {}
if (instagram) {
insta.mediaCount = instagram.media_count
insta.profilePicture = instagram.profile_picture
insta.username = instagram.username
insta.photos = instagram.photos.map((photo) => photo.image)
}
const doc = {}
doc._id = ObjectId(_id)
doc.name = name
doc.birthDate = new Date(birth_date)
if (bio.length) {
doc.bio = bio
}
if (myPhotos.length) {
doc.photos = myPhotos
}
if (Object.keys(insta).length) {
doc.instagram = insta
}
doc.gender = gender
if (jobs.length) {
doc.jobs = jobs
}
if (schools.length) {
doc.schools = schools
}
try {
await collection.insertOne(doc)
} catch (error) {
console.log("err", error)
}
【问题讨论】:
-
element中的实际内容是什么?第一行是分解对象,然后您所做的就是“将其重新组合在一起”。可能有一些方法可以通过“删除”不必要的项目来“解构”,但是这个“可能”应该从查看“来源”实际上是什么的角度来完成。如果您描述来源,这是一个更好的问题。 -
元素实际上是 json 响应,我只需要我指定的属性,但整个代码陷入混乱
-
您被要求在此处实际显示数据样本。重点是“排除”字段可能比明确“包含”更好。只显示一个示例。
-
@CertainPerformance 我对此不确定,因为我认为缺乏关于 map、filter、reduce 或 lodash 方法的知识。这就是我在这里发帖的原因,我想错了吗?
-
@BatuG。 - 您尚未确定您的需求:为我的需求解构对象 - 请确定您的需求并提供输入和预期输出。
标签: javascript node.js ecmascript-6 lodash