Javascript NodeJS中的映射函数未按预期工作

Javascript NodeJS中的映射函数未按预期工作,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,我正在尝试将一些数据从旧的MongoDB模式迁移到新的MongoDB模式。所有的模式工作都很好。我无法理解的是,为什么旧文档在保存为新文档之前不进行转换。我正在阅读所有文档,使用map函数将它们转换为新模式,然后保存它们。但它们都没有通过验证,因为事实证明,它们根本没有被修改为新的模式。这是一个异步问题吗?任何线索都很好 let User = require('./api/models/user.model'); let newUser; let mapUsers = () => {

我正在尝试将一些数据从旧的MongoDB模式迁移到新的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();

您必须将Mongo文档转换为具有
新用户(makeUser(User.toObject())
的对象


当Mongoose返回文档时,它将包含其他可能不明显的属性。当您执行
console.log(user)
时,它通常会打印
toObject的输出,因此会使其变得混乱。

您必须将Mongo文档转换为具有
new user(user.toObject())


当Mongoose返回文档时,它将包含其他可能不明显的属性。当您执行
console.log(user)
时,它通常会打印
toObject
的输出,因此可能会产生混乱。

您是否尝试过执行
new user(makeUser(user.toObject())
,mongoose会返回文档而不是对象。哇。这很有效,谢谢你。如果您想创建一个答案…您是否尝试过使用
新用户(makeUser(User.toObject())
,mongoose会返回文档而不是对象。哇。这很有效,谢谢你。如果您想创建一个答案。。。