【发布时间】:2015-07-10 07:02:45
【问题描述】:
我对 Node.js 比较陌生,目前,我正在尝试制作一个问答应用程序,以下功能与我的问题和我必须做的有关。
列出来自 MongoDB 的所有讨论(可行)。
通过表单向 Mongodb 添加具有属性的讨论:作者、标题、正文。
创建新讨论后,被重定向到新讨论的详细信息页面。
这是我的 MongoDB 结构:mongodb://localhost/Diskussrdb
集合的名称是“讨论”。
目前,我可以在 localhost:3000/discussions 上查看我的所有数据库记录
用于创建新讨论的页面位于 localhost:3000/discussions/create
已修复:但是,按下 /create 页面上的提交按钮不会执行任何操作。我一直盯着网上的教程看,但我找不到任何可以帮助我的东西。
已修复:新问题:提交现在有效,但在地址“localhost:3000/submit”上返回 404。我在 /submit router.post 中添加了一个 console.log,但它没有显示在我的提示中。
提交有效,并转到 LH:3000/discussions/submit,但我的应用似乎找不到我的收藏。但是,LH:3000/discussions 列出了我 MongoDB 中当前的所有项目(Diskussr,集合:讨论),因此必须以某种方式正确链接。
集合的 console.log 也返回“未定义”。 这是错误:“无法调用未定义的方法'插入' **
这些是我的代码文件:
discussions.js -- /routes
var mongoose = require('mongoose');
var express = require('express');
var router = express.Router();
var Discussion = require('../models/discussions');
router.get('/', function(req, res, next){
// alle db records uitlussen, op render alldiscussions
var db = req.db;
Discussion.find({},{},function(e,docs){
res.render('all_discussions', {
"all_discussions" : docs
});
console.log(docs);
});
});
router.get('/create', function(req, res, next){
res.render('add_discussion', {title: 'Diskussr'});
});
router.post('/submit', function(req, res) {
//set DB
var db = req.db;
//form vals
var author = req.body.name;
var title = req.body.title;
var body = req.body.body;
//set collection
var collection = db.get('discussions');
//insert
collection.insert({
"author" : author,
"title" : title,
"body" : body
}, function (err, doc) {
if (err) {
res.send("Database submit error");
}
else {
res.location("all_discussions");
res.redirect("all_discussions");
}
});
});
module.exports = router;
add_discussion.jade -- /views
extends layout
block content
h1 Start a discussion
p Start a discussion here on #{title} and help eachother out.
p Voeg hier uw vraag in:
form(action="/submit" method="post" name="submit_discussion")
input(id="name", placeholder="Your name" name="name")
br
br
input(id="title", placeholder="Brief summary of your problem." name="title")
br
br
input(id="body", placeholder="Explain your problem." name="body")
br
br
button(type="sumbit" id="submit" value="submit") Submit
br
discussions.js -- /models
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
//schema discussions
var DiscussionSchema = new Schema({
author: String,
title: String,
body: String,
category: String,
created: Date
},
{ collection : 'discussions' });
// model
var Discussion = mongoose.model('Discussion', DiscussionSchema, 'discussions');
// test functie: aanmaken vraag on load
// var firstDiscussion = new Discussion({author: "Testuser 1", title: "Testvraag via models"});
// console.log(firstDiscussion);
// //vraag saven
// firstDiscussion.save(function (err, firstDiscussion){
// if (err) return console.error(err);
// });
module.exports = Discussion;
我的讲师让我把这个发布到 StackOverflow,因为他不愿意亲自帮助我。
【问题讨论】:
-
在 router.post('/submit', function(req, res) { ... } 中设置断点会发生什么?
标签: node.js mongodb sockets express mongoose