例如,如果我的“对话”模型是一个简单的聊天消息系统,我可能会执行以下操作:
module.exports = {
attributes: {
messages: {
collection: 'Message'
}
}
}
SailsJs允许这样做吗?如果没有,是否建议使用某种形式的自定义数组来模仿从Conversation到Message的“Has”关系?如下:
module.exports = {
attributes: {
messages: {
type: 'array'
}
}
}
在一个更复杂的场景中,我的目标是让'Conversation'知道它的所有'Message'对象,但这些'Message'对象不必知道它的相关'Conversation'。
答案 0 :(得分:0)
我一直在使用该构造很长一段时间,但直到现在才发现官方文档没有指定它。
他们在one-way associations a model is associated with another model
中提及,并未提及收藏。 (虽然他们应该以同样的方式工作。)
对于one-to-many associations,他们指定model can be associated with many other models
(一个集合)但不指定如果忽略via
属性会发生什么。他们只是提到它is needed
。
但是,如果您只是省略via
属性,则id
字段将用作关联的关键字。所以你指定的构造是允许的。
另外,您可能需要重新考虑将messages
保留为数组或集合。由于您可能需要以随机方式添加/检索/更新/删除消息,并且集合和数组只能作为一个整体进行访问,因此在Message
集合上指定相关索引并放弃拥有协会。这样可以让您快速运行“检索线程的最后10条消息”等查询。