ThinkJS的文档只是粗略的看了一遍,具体使用还得到项目实践中来研究。
说一说它的模型实例化,刚开始的时候没弄明白它的机制。
环境:
ThinkJS version: 3.2.10
多模块目录:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|... |-- src | |-- ... | |-- home | | |-- ... | | |-- controller | | | |-- ... | | | |-- index.js | | | |-- ... | | |-- model | | | |-- ... | | | |-- user.js | | | |-- ... | |-- ... |... |
/src/home/model/user.js
0 1 2 3 4 5 6 7 8 9 10 |
module.exports = class extends think.Model { constructor(...args) { super(...args); think.logger.warn('model', this); } // 测试使用 test(data) { think.logger.warn('data', data); return data; } }; |
/src/home/controller/index.js
0 1 2 3 4 5 6 7 8 9 10 |
const Base = require('./base.js'); module.exports = class extends Base { async indexAction() { const mod = think.model('user'); const data = await mod.test('ddd'); think.logger.warn('1', data); // 报错,调用不到 const mod2 = this.model('user'); const data2 = await mod.test('sss'); think.logger.warn('2', data2); // 正常返回 } } |
所以在控制器内使用模型时,要使用 this.model(‘不带前缀的表名’)进行实例化。