javascript - Mongoose :.save 不是函数

标签 javascript node.js mongodb express mongoose

我是新手,我已经查看了文件,但我对这段代码中发生的事情一无所知。我使用 express-generator 创建了一个日历应用程序,现在我想将它连接到 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!")
    })

这是我收到“TypeError: ev.save is not a function”消息的地方。我的 models/Events.js 看起来像这样:

var mongoose = require('mongoose');

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

 module.exports = mongoose.model('Event', eventSchema);

我的 routes/events.js 看起来像这样:

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); 

我的 app.js 文件中建立 Mongoose 连接的代码是样板文件。您认为问题出在哪里?

最佳答案

我明白了

$(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!")
    })
});

请注意,您的 route 不需要接下来的第三个参数。仅在中间件中使用

关于javascript - Mongoose :.save 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38150757/

相关文章:

javascript - 升级 : get() requires key and callback arguments - no Promise?

node.js - jade 扩展了布局和 if 语句

javascript - meteor +MongoDB : How to get nested data?

javascript - jquery没有从js文件中选择元素

javascript - Web3 不将 web3.eth.Contract 视为构造函数

javascript - 单击时隐藏标题下拉

javascript - 如果在 EnsureIndex MongoDB Node 中发现重复则显示错误

javascript - tinyMCE setContent 剥离结束 p 标签

node.js - PassportJS 获取 Facebook 用户位置

database - 如何在 mongoDB 中使用数组进行查找