You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我无法对该mongoose集合成功执行map操作?

核心问题原因

Array.prototype.map() 方法不会修改原始数组,只会返回一个经过处理的新数组。你目前的代码里没有接收map返回的结果,处理后的数组直接被丢弃,所以后续打印和返回的还是从MongoDB查询到的原始数据。

额外说明:Mongoose的find()方法默认返回的是Mongoose文档实例数组,不是普通JS对象,如果仅需要提取字段值,建议在查询时追加.lean()方法,直接获得纯JS对象,既简化后续操作也能提升查询性能。


修复后代码

User.getUsers = function() {
    return new Promise(async (resolve, reject) => {
        try {
            // 追加lean()获取纯JS对象
            let users = await ValidUser.find().lean()
            // 接收map返回的处理后数组
            let processedUsers = users.map(function(user) {
                return {
                    username: user.username,
                    email: user.email
                }
            })
            console.log(processedUsers)
            resolve(processedUsers)
        } catch {
            reject("404")
        }
    })
}

可选优化方案

你当前已经使用了async/await语法,无需额外手动包装一层Promise,可以简化为以下写法,功能完全兼容原有调用逻辑:

User.getUsers = async function() {
    try {
        const users = await ValidUser.find().lean()
        return users.map(user => ({
            username: user.username,
            email: user.email
        }))
    } catch {
        throw "404"
    }
}

内容的提问来源于stack exchange,提问作者Justin Christopher Domingo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:15:03