类型错误:todo 不是函数

Posted

技术标签:

【中文标题】类型错误:todo 不是函数【英文标题】:TypeError: todo is not a function 【发布时间】:2018-08-23 06:48:32 【问题描述】:

我正在尝试使用以下 url localhost:3000/todos 向邮递员发出发布请求。但是,在发出此请求时,状态显示为 500 内部服务器错误。我在正文中也收到错误消息todo 不是一个函数。 这里是 server.js

var express=require('express');
var bodyParser=require('body-parser');

var mongoose=require('./db/mongoose');
var Todo=require('./models/todo');
var User=require('./models/user');
var app = express();

app.use(bodyParser.json());

app.post('/todos', (req, res) => 
  var todo = new Todo(
    text: req.body.text
  );

  todo.save().then((doc) => 
    res.send(doc);
  , (e) => 
    res.status(400).send(e);
  );
);

app.listen(3000, () => 
  console.log('Started on port 3000');
);

这里是 todo.js

var mongoose=require('mongoose');
var Todo = mongoose.model('Todo', 
  text: 
    type: String,
    required:true,
    minlength:1,
    trim:true

  ,
  completed: 
    type: Boolean,
    default:false
  ,
  completedAt: 
    type: Number,
    default:null
  
);
module.exports=Todo;

【问题讨论】:

为此,您有两种选择:module.exports=Todo; 另一种是进行以下更改var Todo=require('./models/todo').Todo;,因为您在导出时将 Todo 作为对象的键值导出 module.exports=Todo; 嘿,你能指定 chnage 作为我需要更改的内容和位置吗? @Alex 工作正常。 【参考方案1】:

您正在导出一个包含您的 Todo 对象的对象,因此您可以通过以下方式访问它:

var todo = new Todo.Todo( ...(在server.js

或者,Todos.js

module.exports=Todo; 而不是 module.exports=Todo;,然后您将 server.js 保持原样。

【讨论】:

以上是关于类型错误:todo 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

this.state.todos.map 不是函数,React.js

错误类型错误:_co.deleteConsulta 不是函数

类型错误:opendirSync 不是函数

错误类型错误:array.map 不是角度管道中的函数

错误类型错误:this.route.params.flatMap 不是函数

类型错误:hbs 不是函数