Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeError:todo不是一个函数_Javascript_Node.js_Mongodb_Postman - Fatal编程技术网

Javascript TypeError:todo不是一个函数

Javascript TypeError:todo不是一个函数,javascript,node.js,mongodb,postman,Javascript,Node.js,Mongodb,Postman,我正试图使用以下url localhost:3000/todos从邮递员处发出post请求。但是,在发出此请求时,状态显示为500 internal server error(内部服务器错误)。在正文中,我还收到一个错误,其中指出todo不是一个函数。 这里是server.js var express=require('express'); var bodyParser=require('body-parser'); var mongoose=require('./db/mongoose');

我正试图使用以下url localhost:3000/todos从邮递员处发出post请求。但是,在发出此请求时,状态显示为500 internal server error(内部服务器错误)。在正文中,我还收到一个错误,其中指出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};

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

var todo=new todo.todo({…
(在
server.js
中)

或者,在
Todos.js
中:


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

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

var todo=new todo.todo({…
(在
server.js
中)

或者,在
Todos.js
中:


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

要实现这一点,您有两个选择:
module.exports=Todo;
另一个是进行以下更改
var-Todo=require('./models/Todo')).Todo;
因为您在导出
module.exports=Todo;
时将Todo导出为对象的键值,所以您可以指定需要更改的内容和位置作为该更改的内容。@Alex它工作得很好。要实现此功能,您有两种选择:
module.exports=Todo;
另一种是进行以下更改
var Todo=require('./models/todo').todo;
因为您在导出
module.exports=todo;
时将todo导出为对象的键值,您可以指定需要更改的内容和位置。@Alex它工作正常。