我对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中的边缘)一个或多个GPS设备。 这是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'
}
}
};
第三个模型是Credentials,它存储用户凭据并通过LoginsWith边缘链接到User。由于我对前两个模型有问题,我还没有完成这个部分的映射。
虽然我可以通过以下方式访问控制器中的用户数据:
User.findOne({'email': email}, function(err, user) {
console.log('user: ' + user.name);
console.log('user: ' + user.devices);
res.view({user: user});
});
行" user.devices",不返回任何内容。
我错过了什么?如果你能解释使用"来自"我将非常感激。因为我无法从文档中收集太多信息。 非常感谢您的帮助。
答案 0 :(得分:1)
在GPSDevice.js中,您缺少型号名称:
user: {
model: 'user',
via: 'devices'
}
你在USer.js中不需要dominant: true
因为这只适用于多对多关联。
您可以在waterline docs - associations中了解有关一对多关联的更多信息。
此外,它可能不会导致您的问题,但模型/集合名称是小写的,因此collection: 'GPSDevice'
应为collection: 'gpsdevice'
。