thinkjs / thinkjs

Use full ES2015+ features to develop Node.js applications, Support TypeScript.
https://thinkjs.org/
MIT License
5.31k stars 617 forks source link

mongodb 在多级控制器中的使用问题及正则路由使用问题 #926

Closed dishengz closed 6 years ago

dishengz commented 6 years ago

DESC

ENV

OS Platform:win7

Node.js Version:8.7

ThinkJS Version:3.2

code

exports.model = {
  type: 'mongoose',
  common: {
    logConnect: isDev,
    logSql: isDev,
    logger: msg => think.logger.info(msg)
  },
  mongoose:{
    host: '127.0.0.1',
    port: 27017,
    user: 'xxx',
    password: 'xxx',
    database: 'xxx', // 数据库名称
    options: {}
  }
};

error message

在controller建立v1目录 index.js

const rest=require("./../rest")
module.exports=class extends rest{
    async indexAction(){
       let model=this.mongo('user')
       let data=await model.where({name:"disheng"}).find()
       return this.success(data)
    }
}

访问v1/index/index 报错 handle is not function 引入handle:mongoose, mongose=require('think-mongoose') 错误解决

定义正则路由访问 router.js

module.exports = [
    [/\/api\/v1\/(\w+)?/, 'v1/:1', 'rest']
];

访问/api/v1/index/index, 错误 TypeError: Handle is not a constructor

dishengz commented 6 years ago

目测应该是rest中getAction中出了问题

lushijie commented 6 years ago

可有打包的项目zip,我帮你看一下。

dishengz commented 6 years ago

应该是rest.js中主动调用this.modelInstance.pk; 我直接继承think.controller 就不会出现这个问题...希望多多测试.....