2015-04-25 32 views
1

嘿所有刚刚开始使用Sails js和mongoDB,我有点困惑。如何在连接中添加另一个字段sails js

我有两个型号,一个多一对多的关系:

user.js的

module.exports = { 
    attributes: { 
    username: 'STRING', 
    password: 'STRING', 
    doors:{ 
     collection: 'door', 
     via: 'users', 
    } 
    } 
}; 

和Door.js

module.exports = { 
    attributes: { 
    name: 'STRING', 
    users:{ 
     collection: 'user', 
     via: 'doors' 
    } 
    } 
}; 

这工作得很好,我可以创造一个用户和门,并将其与另一个关联。不过,我想在连接中有另一个字段,即终止日期(也就是说,用户只能访问某个特定的日期之前的特定门)。

我该怎么做呢?

回答

1

您需要创建多对多关联。但是,至今尚未正式支持。

但是,您可以手动执行此操作。

现在,在这个例子中,对于一个用户来说,所有的门有时会更难一些,反之亦然,因为你必须进行第二次查询。但是你可以用这个设置如下:

UserDoors 
    .find() 
    .where({expires:{'<':new Date()}}) 
    .populate('doors') 
    .populate('users') 
    .exec(/*....*/) 

你的模型

User.js 

module.exports = { 
    attributes: { 
    username: 'STRING', 
    password: 'STRING', 
    doors:{ 
     collection: 'userDoors', 
     via: 'users', 
    } 
    } 
}; 


userDoors.js 
module.exports = { 
    attributes: { 
    doors:{ 
     model: 'door' 
    }, 
    users:{ 
     model: 'user' 
    }, 
    expires: 'datetime' 
    } 
}; 



and Door.js 

module.exports = { 
    attributes: { 
    name: 'STRING', 
    users:{ 
     collection: 'userDoors', 
     via: 'doors' 
    } 
    } 
}; 

做谷歌搜索sails.js many to many through还帮你找到你想找的。

+0

发生了一些有趣的事情,我实现了你的建议,并且它与风帆盘适配器一起工作良好,但是当切换到风帆 - 蒙哥适配器时,看起来风帆不再看到这种关系。 mongodb有没有限制?我注意到它使用了id列的特定格式,但考虑到了这一点。 – eptgrant

+0

hmmmm。这很奇怪。我会确认你的所有代码看起来不错,检查你的查询数据以确保它正确插入。我在mongo中有这样的关系设置,它可以工作。 – Meeker

相关问题