Javascript Mongoose:。保存不是一个函数

Javascript Mongoose:。保存不是一个函数,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我是一个新手,我已经查阅了档案,但这段代码中到底发生了什么让我摸不着头脑。我使用ExpressGenerator创建了一个日历应用程序,现在我想把它连接到MongoDB。与Mongo的实际连接正在工作,但我无法让它保存文档 我的global.js的相关部分(我运行前端Javascript的地方)如下所示: $(document).ready(function() { var ev = new Event({ date: "a6_13_2016", time: 900, description:

我是一个新手,我已经查阅了档案,但这段代码中到底发生了什么让我摸不着头脑。我使用ExpressGenerator创建了一个日历应用程序,现在我想把它连接到MongoDB。与Mongo的实际连接正在工作,但我无法让它保存文档

我的global.js的相关部分(我运行前端Javascript的地方)如下所示:

$(document).ready(function() {

var ev = new Event({ date: "a6_13_2016", time: 900, description:"Fencing"});
    ev.save(function(err) {
        if (err) console.log(err);
        else console.log("Success!")
    })
var mongoose = require('mongoose');

var eventSchema = new mongoose.Schema({
    date: String,
    time: Number,
    description: String
});

 module.exports = mongoose.model('Event', eventSchema);
var express = require('express');
var router = express.Router();

var mongoose = require('mongoose');
var Event = require('../models/Events.js');

/* GET /event listing. */
router.get('/', function(req, res, next) {
  Event.find(function (err, dates) {
    if (err) return next(err);
    res.json(dates);
  });
});

/*POST event*/
router.post('/', function(req, res, next) {
  Event.create(req.body, function (err, post) {
    if (err) return next(err);
    res.json(post);
  });
});

/* GET /event/id */
router.get('/:id', function(req, res, next) {
  Event.findById(req.params.id, function (err, post) {
    if (err) return next(err);
    res.json(post);
  });
});

module.exports = router;
这就是我得到“TypeError:ev.save不是函数”消息的地方。我的models/Events.js如下所示:

$(document).ready(function() {

var ev = new Event({ date: "a6_13_2016", time: 900, description:"Fencing"});
    ev.save(function(err) {
        if (err) console.log(err);
        else console.log("Success!")
    })
var mongoose = require('mongoose');

var eventSchema = new mongoose.Schema({
    date: String,
    time: Number,
    description: String
});

 module.exports = mongoose.model('Event', eventSchema);
var express = require('express');
var router = express.Router();

var mongoose = require('mongoose');
var Event = require('../models/Events.js');

/* GET /event listing. */
router.get('/', function(req, res, next) {
  Event.find(function (err, dates) {
    if (err) return next(err);
    res.json(dates);
  });
});

/*POST event*/
router.post('/', function(req, res, next) {
  Event.create(req.body, function (err, post) {
    if (err) return next(err);
    res.json(post);
  });
});

/* GET /event/id */
router.get('/:id', function(req, res, next) {
  Event.findById(req.params.id, function (err, post) {
    if (err) return next(err);
    res.json(post);
  });
});

module.exports = router;
我的routes/events.js如下所示:

$(document).ready(function() {

var ev = new Event({ date: "a6_13_2016", time: 900, description:"Fencing"});
    ev.save(function(err) {
        if (err) console.log(err);
        else console.log("Success!")
    })
var mongoose = require('mongoose');

var eventSchema = new mongoose.Schema({
    date: String,
    time: Number,
    description: String
});

 module.exports = mongoose.model('Event', eventSchema);
var express = require('express');
var router = express.Router();

var mongoose = require('mongoose');
var Event = require('../models/Events.js');

/* GET /event listing. */
router.get('/', function(req, res, next) {
  Event.find(function (err, dates) {
    if (err) return next(err);
    res.json(dates);
  });
});

/*POST event*/
router.post('/', function(req, res, next) {
  Event.create(req.body, function (err, post) {
    if (err) return next(err);
    res.json(post);
  });
});

/* GET /event/id */
router.get('/:id', function(req, res, next) {
  Event.findById(req.params.id, function (err, post) {
    if (err) return next(err);
    res.json(post);
  });
});

module.exports = router;
我想保存一些东西来测试它,但它给了我“.save”不是一个函数。除了

var events = require('./routes/events');
app.use('/events', events); 
建立Mongoose连接myapp.js文件的代码是样板文件。您认为问题出在哪里?

您确定这行吗

var Event = require('../models/Events.js');
有正确的路径吗

您正在从事件函数创建ev对象,从错误描述来看,ev似乎未定义

如果未正确加载事件文件,您将无法访问.save函数。

我明白了

$(document).ready(function() {
您正在尝试在浏览器中使用Mongoose吗

它应该在服务器端使用

在浏览器中,您需要向服务器发送AJAX请求:

$('#save').click(function() {
    $.post('/event', function(response) { console.log(reposne) })
});
在服务器上,您应该添加一个路由来处理AJAX请求,在该路由中,您可以保存您的模型:

router.post('/event', function(req, res) {
  var ev = new Event({ date: "a6_13_2016", time: 900, description:"Fencing"});
    ev.save(function(err) {
        if (err) console.log(err);
        else console.log("Success!")
    })
});

请注意,您不需要在轮换中使用第三个参数。它仅用于中间件

您正在从前端运行mongoose?是一个已经存在于浏览器中的全局参数。此外,不确定您为什么在前端使用mongoose,您可能只想发送一个AJAX请求,将数据从客户端发送到您的服务器呃,然后在服务器端做猫鼬的事情。