【发布时间】:2014-05-19 07:58:27
【问题描述】:
我有一个以前用于生产的 MySQL 数据库,现在我们的团队正在迁移到 SailsJS。我读过关于风帆协会的文章,我认为它很棒。但我想知道您是否可以使用关联来使用.populate 方法填充连接的表。我已经尝试通过添加
user: {
model: 'User'
}
到我的个人资料模型。但是当我尝试使用 populate 方法填充它时。它会产生错误。
"error": "E_UNKNOWN",
"status": 500,
"summary": "Encountered an unexpected error",
"raw": {
"code": "ER_BAD_FIELD_ERROR",
"errno": 1054,
"sqlState": "42S22",
"index": 0
}
这是两个mysql表模式 对于用户表:
CREATE TABLE IF NOT EXISTS `user` (
`userId` int(20) NOT NULL AUTO_INCREMENT,
`email` varchar(40) NOT NULL,
`password` varchar(60) NOT NULL,
`locationId` int(20) DEFAULT NULL,
`status` tinyint(4) NOT NULL COMMENT '0 - inactive, 1 - active, 2 - delete',
`companyId` int(20) DEFAULT NULL,
`createDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`userId`),
UNIQUE KEY `email` (`email`),
KEY `fk_locationId` (`locationId`),
KEY `fk_orgId` (`companyId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=259 ;
对于配置文件表:
CREATE TABLE IF NOT EXISTS `profile` (
`profileId` int(11) NOT NULL AUTO_INCREMENT,
`firstName` varchar(30) NOT NULL,
`lastName` varchar(30) NOT NULL,
`suffix` varchar(10) DEFAULT NULL,
`nickName` varchar(25) DEFAULT NULL,
`title` varchar(45) DEFAULT NULL COMMENT 'Name Title, e.g, Dr., Engr., etc\n',
`userId` int(11) NOT NULL,
`birthDate` date DEFAULT NULL,
`phoneNumber` varchar(30) DEFAULT NULL,
`dateUpdated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`image` tinyint(1) NOT NULL DEFAULT '0',
`gender` tinyint(1) NOT NULL COMMENT '0 - female, 1 - male',
`middleName` varchar(20) DEFAULT NULL,
`telephoneNumber` varchar(30) DEFAULT NULL,
PRIMARY KEY (`profileId`),
KEY `fk_userId` (`userId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=259 ;
ALTER TABLE `profile`
ADD CONSTRAINT `fk_userId` FOREIGN KEY (`userId`) REFERENCES `user` (`userId`) ON DELETE CASCADE ON UPDATE CASCADE;
更新
User模特
Profile模特
【问题讨论】:
-
看看the docs。您的语法错误;
model属性应该是一个字符串,它是要关联的模型的标识,例如model: 'user' -
哦,是的。我只是忘了在用户上加上撇号。但不是。还是不行。
-
必须是小写的
user。是小写的吗?另外,您可以发布您看到的错误吗? -
无论如何,我不认为大小写是问题,因为我将模型的第一个字母指定为大写。
-
这很重要。除非您在模型定义中专门设置了
identity属性,否则无论全球化类名是什么,模型标识都是小写的。
标签: mysql associations sails.js