我是新手,我已经查看了文件,但我对这段代码中发生的事情一无所知。我使用 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/