【问题标题】:Map function in NodeJS not working as expectedNodeJS中的地图功能无法按预期工作
【发布时间】:2017-12-08 16:02:27
【问题描述】:

我正在尝试将一些数据从旧的 MongoDB 模式迁移到新模式。所有架构的东西都工作正常。我无法理解的是为什么旧文档在保存为新文档之前没有被转换。我正在阅读所有文档,使用 map 函数将它们转换为新模式,然后保存它们。但它们都没有通过验证,因为事实证明,它们根本没有被修改为新模式。这是一个异步问题吗?任何线索都会很棒。

let User = require('./api/models/user.model');

let newUser;
let mapUsers = () => {

    let makeUser = (u) => {
        return {
            firstName: u.first_name,
            lastName: u.last_name,
            avatarUrl: u.avatar_url,
            email: u.email,
            loginCount: u.login_count,
            loginTime: u.login_time,
            logoutTime: u.logout_time
        }
    };
    h2User.find({}).limit(1).exec((err, users) => {
        if (err) {
            console.error(err);
        } else {
            users.map(user => {
                newUser = new User(makeUser(user));  // like this doesn't work
                newUser.save((err, nu) => {
                    if (err) {
                        console.log(err);
                    } else {
                        console.log(nu._id)
                    }
                });
            });
        }
    });
};

mapUsers();

【问题讨论】:

  • 你试过new User(makeUser(user.toObject())),猫鼬返回的是文档而不是对象。
  • 哇。那行得通,谢谢。如果你想创建一个答案...

标签: javascript node.js mongoose


【解决方案1】:

您必须将 Mongo 文档转换为带有 new User(makeUser(user.toObject())) 的对象。

当 Mongoose 返回一个文档时,它将包含其他可能不明显的属性。当您执行console.log(user) 时,它通常会打印toObject 的输出,因此可能会让人感到困惑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    相关资源
    最近更新 更多