mongoose:.save不是一个函数
我是非常新的,我已经浏览了档案,但是这个代码里面发生了什么事情,这让我无法回避。 我使用快速生成器来创build一个日历应用程序,现在我想把它连接到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不是一个函数”的消息。 我的模型/ Events.js看起来像这样:
var mongoose = require('mongoose'); var eventSchema = new mongoose.Schema({ date: String, time: Number, description: String }); module.exports = mongoose.model('Event', eventSchema);
我的路线/ 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;
我想保存一些东西来testing它,但是它给了我“.save不是一个函数
var events = require('./routes/events'); app.use('/events', events);
和build立Mongoose连接我的app.js文件的代码是样板。 你认为是什么问题?
我懂了
$(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!") }) });
请注意,你不需要接下来的第三个参数。 它仅用于中间件
你确定这一行吗?
var Event = require('../models/Events.js');
有正确的path吗?
你正在从Event函数创build一个ev对象,从错误描述来看,ev似乎是不确定的。
如果您的事件文件没有正确加载,您将无法访问.savefunction。