首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sails + sails-orientdb一对多和一对一关联

Sails + sails-orientdb一对多和一对一关联
EN

Stack Overflow用户
提问于 2015-08-11 21:27:09
回答 1查看 140关注 0票数 1

我是Sails的新手,在将我的模型关联映射到OrientDB时遇到了困难。

我有3个型号:

代码语言:javascript
复制
//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的模型

代码语言:javascript
复制
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边缘链接到用户。我还没有抽出时间来映射这一部分,因为我对前两个模型有问题。

虽然我可以通过以下方式访问控制器中的用户数据:

代码语言:javascript
复制
User.findOne({'email': email}, function(err, user) {
        console.log('user: ' + user.name);
        console.log('user: ' + user.devices);
        res.view({user: user});
    });

行"user.devices“不返回任何内容。

我错过了什么?如果您能解释一下"via“的用法,我将不胜感激,因为我无法从文档中获得太多信息。我们将非常感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-08-13 01:23:32

在GPSDevice.js中,您缺少模型名称:

代码语言:javascript
复制
user: {
  model: 'user',
  via: 'devices'
}

而且您不需要在USer.js中使用dominant: true,因为它只适用于多对多关联。

您可以在waterline docs - associations中阅读有关一对多关联的更多信息。

此外,这可能不会导致您的问题,但模型/集合名称是小写的,所以collection: 'GPSDevice'应该是collection: 'gpsdevice'

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31943117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档