我正在使用sails.js waterline orm.现在这不是特别的帆问题,但我必须放置一些上下文,所以当你创建一个记录时,你会得到一个创建了数据的对象.如果记录具有关联的其他记录(集合),则它具有与返回对象中的那些相关的键,但是这些键是getter / setter,即使这些相关对象不存在数据.
我简化了一些事情只是为了揭示主要观点.
这是我的用户模型:
var User = {
attributes:
status: {type:'string'}
images: {
collection: 'Image'
}
}
让我们失望,我在User模型上执行了一个创建查询,该模型具有关联的图像集合. userRecord是查询返回的内容.
如果我在console.log中显示它,它会显示与模型本身相关的属性
但不是相关的记录,即使密钥实际存在,你也可以
访问它但是对于console.log或utils.inspec是不可见的,即使将show hidden设置为true也是如此.
console.log(userRecord)
这是返回的内容
{ name: 'zaggen'}
这应该归还
{ name: 'zaggen',
images: [{
path: 'some-path/img.png'
}]
}
我可以像这样访问隐藏的属性:
console.log(userRecord.images[0].path)
// outputs some-path/img.png
这怎么可能呢?,据我所知,除了可能在__proto__对象中定义了属性,但是在这种情况下它们不是这样的时候,无法将信息隐藏到节点中的console.log.
在寻找这个之后,我没有找到任何东西,它非常奇怪,所以我认为它可能是一个很好的问题.它可以帮助我的工作过程,如果我可以console.log这个信息并获取所有数据,现在我可以使用lodash并调用克隆或默认值,我得到它应该的对象.