Javascript TypeError XXX不是NodeJS中的函数
我试图在nodejsapi中使用一个服务,使api更易于测试,但是当我注入服务类时,它告诉我gettask方法不存在 路线 服务 当我去http://localhost:3000/api/tasks 我得到这个错误: TypeError:TodoService.getTasks不是函数 getTasks是TodoService实例上的一个方法-您还没有创建一个,即像new TodoService一样 或者实例化一个实例Javascript TypeError XXX不是NodeJS中的函数,javascript,node.js,Javascript,Node.js,我试图在nodejsapi中使用一个服务,使api更易于测试,但是当我注入服务类时,它告诉我gettask方法不存在 路线 服务 当我去http://localhost:3000/api/tasks 我得到这个错误: TypeError:TodoService.getTasks不是函数 getTasks是TodoService实例上的一个方法-您还没有创建一个,即像new TodoService一样 或者实例化一个实例 await new TodoService().getTasks(); 或
await new TodoService().getTasks();
或者,将gettask设置为静态
或者考虑到TodoService看起来甚至不应该被实例化的事实,这就是我使用您展示的代码来实现的方式,让TodoService成为一个简单的对象
const TaskModel = require('../models/task');
const TodoService = {
async getTasks() {
try {
const tasks = await TaskModel.find();
return {
message: 'Fetched posts successfully.',
tasks: tasks,
status: 200
};
} catch (err) {
if (!err.statusCode) {
err.statusCode = 500;
}
next(err);
}
}
}
module.exports = TodoService;
getTasks是TodoService实例上的一个方法-您还没有创建一个,即与新的TodoService一样-要么将getTasks声明为静态异步getTasks,要么不将TodoService设置为类,而是将var TodoService={etcnice成功了。请随意把它作为一个答案,让您了解要点。它有什么优点或缺点吗?您建议的单元测试的第二种方法,或者本质上是一样的?我是新手,这实际上取决于用法-我无法告诉您哪个更好,因为对我来说,我同时添加的最后两种方法对我来说几乎是相同的谢谢你,先生!
await new TodoService().getTasks();
const TaskModel = require('../models/task');
class TodoService {
static async getTasks() {
try {
const tasks = await TaskModel.find();
return {
message: 'Fetched posts successfully.',
tasks: tasks,
status: 200
};
} catch (err) {
if (!err.statusCode) {
err.statusCode = 500;
}
next(err);
}
}
}
module.exports = TodoService;
const TaskModel = require('../models/task');
const TodoService = {
async getTasks() {
try {
const tasks = await TaskModel.find();
return {
message: 'Fetched posts successfully.',
tasks: tasks,
status: 200
};
} catch (err) {
if (!err.statusCode) {
err.statusCode = 500;
}
next(err);
}
}
}
module.exports = TodoService;