我是Sails的新手,在将我的模型关联映射到OrientDB时遇到了困难。
我有3个型号:
//User.js
module.exports = {
attributes: {
id: {
type: 'string',
primaryKey: true,
columnName: '@rid'
},
name : {
type: 'string',
required: true
},
surname : {
type: 'string',
required: true
},
email : {
type: 'string',
index: 'unique'
},
devices : {
collection: 'GPSDevice',
via: 'user',
dominant: true
}
};用户模型“跟随”(OrientDB中的边缘)一个或多个GPSDevice。以下是GPSDevice.js的模型
module.exports = {
attributes: {
id: {
type: 'string',
primaryKey: true,
columnName: '@rid'
},
brand: {
type: 'string',
required: true
},
model: {
type: 'string',
required: true
},
label: {
type: 'string',
required: true
},
user: {
via: 'devices'
}
}
};第三个模型是凭证,它存储用户凭证,并通过LoginsWith边缘链接到用户。我还没有抽出时间来映射这一部分,因为我对前两个模型有问题。
虽然我可以通过以下方式访问控制器中的用户数据:
User.findOne({'email': email}, function(err, user) {
console.log('user: ' + user.name);
console.log('user: ' + user.devices);
res.view({user: user});
});行"user.devices“不返回任何内容。
我错过了什么?如果您能解释一下"via“的用法,我将不胜感激,因为我无法从文档中获得太多信息。我们将非常感谢您的帮助。
发布于 2015-08-13 01:23:32
在GPSDevice.js中,您缺少模型名称:
user: {
model: 'user',
via: 'devices'
}而且您不需要在USer.js中使用dominant: true,因为它只适用于多对多关联。
您可以在waterline docs - associations中阅读有关一对多关联的更多信息。
此外,这可能不会导致您的问题,但模型/集合名称是小写的,所以collection: 'GPSDevice'应该是collection: 'gpsdevice'。
https://stackoverflow.com/questions/31943117
复制相似问题