ThinkJS supports Mysql well, the underlying library is https://www.npmjs.com/package/mysql.
Mysql default has only one connection, if you want to use multiple connections, you can use connections pool. Modify src/common/config/db.js, such as:
export default {
connectionLimit: 10 //create 10 connections
}
Default host and port will used to connect Mysql, if you want to use unix domain socket, see the below configuration:
export default {
socketPath: "/tmp/mysql.socket"
}
Use below configuration to set SSL connection:
export default {
ssl: {
ca: fs.readFileSync(__dirname + "/mysql-ca.crt")
}
}
The encoding of database usually is utf8, but it doesn't support emoji. If you want database to support emoji, set database encoding to utf8mb4.
Besides, you have to modify encoding in src/common/config/db.js to utf8mb4:
export default {
encoding: "utf8mb4"
}
In some Node.js version(like 4.2.0), connect Mysql will throw this error:
Error: Handshake inactivity timeout
at Handshake.sequence.on.on.on.on.on.self._connection._startTLS.err.code (/home/***/node_modules/mysql/lib/protocol/Protocol.js:154:17)
at Handshake.emit (events.js:92:17)
at Handshake._onTimeout (/home/***/node_modules/mysql/lib/protocol/sequences/Sequence.js:116:8)
at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)
--------------------
at Protocol._enqueue (/home/***/node_modules/mysql/lib/protocol/Protocol.js:135:48)
at Protocol.handshake (/home/***/node_modules/mysql/lib/protocol/Protocol.js:52:41)
at PoolConnection.connect (/home/***/node_modules/mysql/lib/Connection.js:119:18)
at Pool.getConnection (/home/***/node_modules/mysql/lib/Pool.js:45:23)
at Object.exports.register (/home/***/node_modules/hapi-plugin-mysql/lib/index.js:40:27)
at /home/***/node_modules/hapi/lib/plugin.js:242:14
at iterate (/home/***/node_modules/hapi/node_modules/items/lib/index.js:35:13)
at done (/home/***/node_modules/hapi/node_modules/items/lib/index.js:27:25)
at Object.exports.register (/home/***/node_modules/lout/lib/index.js:95:5)
at /home/***/node_modules/hapi/lib/plugin.js:242:14
To solve this, just update Node.js to the latest version.
This doc stays at https://github.com/75team/www.thinkjs.org/tree/master/view/zh-cn/doc/2.0/model_mysql.md.