我有一个MySQL数据库和一个水线模型,用于一个相当简单的记录:Todo。 这很简单,因为我们使用它来验证 Sails.js API 的概念。
CREATE TABLE `Todo` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`TodoItem` varchar(200) NOT NULL,
`Completed` bit(1) NOT NULL DEFAULT b'0',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 COMMENT=' ';
我以这种方式设置了模型:
module.exports = {
connection: 'companyMySql',
tableName: 'Todo',
attributes: {
ID: {
type: 'integer',
autoIncrement: true,
primaryKey: true
},
TodoItem: {
type: 'string',
required: true
},
Completed: {
type: 'boolean',
defaultsTo: 'false',
size: 1,
boolean: true
}
},
autoCreatedAt: false,
autoUpdatedAt: false,
autoPK: false
};
我遇到的问题是,自动创建的 Todo API 在"已完成"字段中创建了一堆额外的垃圾,我正在尝试找出如何删除它。 我期待一个布尔值,但我绝对可以使用 0/1 或字符串文字,但这不是我得到的。 我已经在字段上尝试了各种验证,例如"min:0,max:1",但这并没有改变结果。
以下是检索单个记录的结果:
{
"ID": 1,
"TodoItem": "Create Todo API",
"Completed": {
"0": 1,
"length": 1,
"parent": [
100,
0,
0,
0,
3,
83,
69,
76,
69,
67,
96,
46,
96,
73,
68,
96,
44,
32,
96,
116,
111,
100,
111,
96,
// This continues on for quite some time
],
"offset": 2128 // This value increases each time I call a GET until it gets to ~8000, then it resets to ~500
}
}
那么有没有人知道我能做些什么来从中获得一个直接的布尔值?
经过一些进一步的测试, 我能够通过使用 TINYINT(1) 作为我的列数据类型来获取一个布尔值按预期工作。 一旦我这样做了,这个模型就会按照我的预期工作:
Completed: {
type: 'boolean',
defaultsTo: false,
boolean: true
}
这似乎仍然不理想,但这是我的目的的解决方案。