我正在尝试将旧的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();
答案 0 :(得分:3)
您必须将Mongo文档转换为new User(makeUser(user.toObject()))
的对象。
当Mongoose返回文档时,它将包含其他可能不明显的属性。执行console.log(user)
时,它通常会打印toObject
的输出,因此会让人感到困惑。