【问题标题】:How to detach a part of some value inside a array object and map into new array from AWS MongoDB values?如何分离数组对象中某些值的一部分并从 AWS MongoDB 值映射到新数组?
【发布时间】:2021-08-23 12:26:07
【问题描述】:

实际上,我尝试将值(用户 ID、用户名和用户生日)映射到 AWS MongoDB 中的数组对象,我想比较用户的生日是不是今天。在 MongoDB 中,用户的生日(列名;dateOfBirth)以这种格式存储。 "YYYY-MM-DDT00:00:00" 所以我只想从中获取月份值和日期值。但我无法从数组中拆分这个值。它怎么能或有其他方法可以做到这一点?我很难建立这个逻辑。非常感谢您的帮助!

const allUsers = await helper.getAllUsers(organizationId); //get all user data
const allUserList = allUsers.Items.map(user => (
 { userId: user.id,
   userFullName: `${user.firstName} ${user.lastName}`,
   userBirthday: user.dateOfBirth 
}));
const thisDay = new Date().getMonth();
const thisMonth = new Date().getDate();

const birthdayUserList = allUserList.filter(
   user => ??????? === thisDay && ??????? === thisMonth
);

在最后一行代码中,我想从 allUserListuserBirthday 中获取日期和月份值em> 并与 thisDay 和 thisMonth 进行比较。此外,我附上了 allUserList

的内部外观
[
 { userId: 'xxxxxxxxxxxxxxx', userFullName: 'xxxxx  xxxx' }, userBirthday: 'YYYY-MM-DDT00:00:00'},
 { userId: 'xxxxxxxxxxxxxxx', userFullName: 'xxxxx  xxxx' }, userBirthday: 'YYYY-MM-DDT00:00:00'},
 { userId: 'xxxxxxxxxxxxxxx', userFullName: 'xxxxx  xxxx' }, userBirthday: 'YYYY-MM-DDT00:00:00'},
 { userId: 'xxxxxxxxxxxxxxx', userFullName: 'xxxxx  xxxx' }, userBirthday: 'YYYY-MM-DDT00:00:00'},
 .....
]

【问题讨论】:

  • 如果您的模型将该日期设置为日期,过滤器可以只使用user.userBirthday.getDate() 和user.userBirthday.getMonth(),如果不是日期格式而是字符串,allUserList 循环可能会返回@987654326 @
  • 感谢您的支持!在这里,第一个不起作用。但是第二个是经过如下一些更改后工作的。 userBirthMonth: new Date(user.dateOfBirth).getMonth() 和 userBirthDate: new Date(user.dateOfBirth).getDate()

标签: javascript reactjs mongodb


【解决方案1】:
const allUsers = await helper.getAllUsers(organizationId); //get all user data
const allUserList = allUsers.Items.map(user => (
 { userId: user.id,
   userFullName: `${user.firstName} ${user.lastName}`,
   userBirthMonth: new Date(user.dateOfBirth).getMonth(),
   userBirthDate: new Date(user.dateOfBirth).getDate()
}));
const thisDay = new Date().getMonth();
const thisMonth = new Date().getDate();

const birthdayUserList = allUserList.filter(user =>
 user.userBirthMonth === currentMonth && user.userBirthDate === currentDate
);

或者您可以将月份和日期一起使用,如下所示。

{ userBirthday: `${new Date(user.dateOfBirth).getMonth()}-${new Date(user.dateOfBirth).getDate()} }

在allUserList 中,您应该按照上面提到的格式存储当前日期。

const currentDate = `${new Date().getMonth()}-${new Date().getDate()}`

逻辑可以如下使用。

const birthdayUserList = allUserList.filter( user => user.userBirthday === currentDate);

【讨论】:

    猜你喜欢
    • 2021-04-20
    • 1970-01-01
    • 2016-11-06
    • 2020-07-22
    • 2022-03-17
    • 2019-09-25
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    相关资源
    最近更新 更多