在不使用主键的情况下,在js中填充一对多的关系

在sails / waterline文档中,一对多的每个示例代码假定主键是两个模型(我认为)之间的关联。

http://sailsjs.org/documentation/concepts/models-and-orm/associations/one-to-many

不过,我有模型有一个引用列引用一些其他值类似于

User { id (primary): <int> email: <string> } recordings { id (primary): <int> email: <that email from user> } 

atm即时通讯尝试

 userModel.js { attributes: { email: { type: 'string', size: 255, unique: true }, }, queries: { columnName: 'email', model: 'recordings' } ..... } } recordingsModel.js { attributes: { email: { type: 'string', size: 255, }, }, queries: { model: 'user' } ..... } } 

并在控制器中

 sails.models.user .find() .populate('queries') .exec(function (err, results) { }); 

但我得到的错误:ER_BAD_FIELD_ERROR:未知的列'__queries.queries'在'字段列表'

有没有人有一个很好的教程一对多的水线关系,因为在那里的网站文档是非常糟糕的,所以我觉得我只是不理解如何devise模型。

从我可以收集的内容来看,你想要的是能够设置你的userModelrecordingsModel模型,通过为emaillogging一个特定的值,它将自动与共享该电子邮件的任何用户相关联。 这不是水线(帆船ORM)所支持的。

相反,最好的select是按照文档中的说明设置模型:

 // userModel.js { attributes: { email: { type: 'string', size: 255, unique: true }, }, recordings: { collection: 'recordingsModel', via: 'user' } ..... } } // recordingsModel.js { attributes: { email: { type: 'string', size: 255, }, }, user: { model: 'userModel' } } } 

我的猜测是,你正试图避免查找一个用户ID,以便将新的录音与它联系起来。 如果您将email作为userModel的主键,则可以执行此userModel ; 那么当你创build一个新的录音,你可以将其user设置为一个电子邮件地址,瞧:这两个链接。