我有一个名为 bookings 的对象,其中有几个属性,我想使用 Object.assign 进行扩展,如下所示:
let data = Object.assign(booking, {
hiw: event.hiw[booking.locale],
tip: event.tip[booking.locale],
start: moment(event.start).format('L')
});
但是当我打印数据时,结果将是来自源(预订)的相同对象,所以hiw
, tip
and start
将被忽略,但是...如果我尝试这样做:
let data = Object.assign({}, {
hiw: event.hiw[booking.locale],
tip: event.tip[booking.locale],
start: moment(event.start).format('L')
});
这将工作完美。
我的问题是:我在这里做错了什么?为什么我不能延长booking
我可以扩展空对象吗?
这绝对不是异步代码的问题,当我尝试延长预订时,他已经存在并包含所有属性。
我也尝试使用下划线extend
方法和行为完全相同。
Mongoose 文档(模型实例)很特殊:它们只会打印模式中存在的属性。
如果没有在那里定义属性,那么当您console.log()
它们(如果你将文档转换为普通的 JS 对象,也不会obj.toObject()
).
这意味着使用Object.assign()
仅当您分配架构中也存在的属性时才有效。任何未声明的属性都不会显示(也不会保存到数据库)。
如果您打算使用文档进行输出,则应先将其转换为适当的 JS 对象,然后再分配给它:
let data = Object.assign(booking.toObject(), {
hiw : event.hiw[booking.locale],
tip : event.tip[booking.locale],
start : moment(event.start).format('L')
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)