错误提示:TypeError: SuccessModel is not a constructor
来源:5-7 开发路由(博客列表路由)(上)
朱青1900
2019-07-30
老师,你好,我在这节运行时候报出下面错误
下面是代码:
router/blog.js
const {getList} = require('../controller/blog')
const { SuccessModel, ErrorModel } = require('../model/resModel')
const handleBlogRouter = (req,res)=> {
const method = req.method //GET POST
//获取博客列表
if (method === 'GET' && req.path === '/api/blog/list') {
const author = req.query.author || ''
const keyword = req.query.keyword || ''
const listData = getList(author,keyword)
//listData是请求返回的数据数组,我们还要设置返回的code和message信息,需要利用model进行数据格式的修整
return new SuccessModel(listData)
}
//获取博客详情
if(method === 'POST' && req.path === '/api/blog/detail'){
return {
msg : '这是获取博客详情的接口'
}
}
//新建一篇博客
if(method === 'POST' && req.path === '/api/blog/new'){
return {
msg : '这是新建博客详情的接口'
}
}
//更新一篇博客
if(method === 'POST' && req.path === '/api/blog/update'){
return {
msg : '这是更新博客详情的接口'
}
}
//一篇博客
if(method === 'POST' && req.path === '/api/blog/del'){
return {
msg : '这是删除一篇博客的接口'
}
}
}
module.exports = handleBlogRouter
model/resModel.js
/*
* @Author: yangyang
* @Date: 2019-07-30 08:59:02
* @Last Modified by: yangyang
* @Last Modified time: 2019-07-30 08:59:02
*/
class BaseModel {
constructor(data, message) {
//data是对象类型,message是字符串类型,如果第一个传入的就是字符串类型,第二个没传,要兼容,就把传入的字符串赋给message
if (typeof data === 'string') {
this.message = data
data = null
message = null
}
if (data) {
this.data = data
}
if (message) {
this.message = message
}
}
}
class SuccessModel extends BaseModel {
constructor(data, message) {
super(data, message)
this.errno = 0
}
}
class ErrorModel extends BaseModel {
constructor(data, message) {
super(data, message)
this.errno = -1
}
}
module.exports = {
SuccessModel,
ErrorModel
}
还有项目目录结构:
老师帮忙看下哪里有问题,麻烦老师了
写回答
3回答
-
凉夏初三
2020-09-02
遇到一样的问题。发现是代码的单词写错了
00 -
不学会死掉
2020-08-16
我也遇到这个问题了,原因是因为我把model写成modal了,而且好几处,都改统一以后就没问题了,不过我看这个提问传的图没这个问题,大家可以参考一下
00 -
双越
2019-07-30
你在报错的前面,打印一下 SuccessModel ,看打印出来是个啥
072020-06-04
相似问题