首页 > 解决方案 > 为什么我无法“映射”这个猫鼬系列?

问题描述

我正在尝试在 mongoDB 中映射一组用户文档。下面是我的代码。

User.getUsers = function() {
    return new Promise(async (resolve, reject) => {
        try {
            let users = await ValidUser.find()
            users.map(function(user) {
                return {
                    username: user.username,
                    email: user.email
                }
            })
            console.log(users)
            resolve(users)
        } catch {
            reject("404")
        }
    })
}

此代码仅记录原始存储的数据,根本不“映射”数组。

标签: javascriptmongodbmongoose

解决方案


数组的map函数在将传入的映射函数应用于每个元素后返回一个新数组。如果将其分配回users变量,则应该可以解决问题,因为console.logand Promiseresolve 调用现在将使用新创建的数组:

users = users.map(function(user) {
    return {
        username: user.username,
        email: user.email
    }
})

来自MDN

map() 方法创建一个新数组,其中填充了在调用数组中的每个元素上调用提供的函数的结果。


推荐阅读