【问题标题】:Why are submissions to my mongo database blank?为什么提交给我的 mongo 数据库是空白的?
【发布时间】:2017-07-12 07:06:58
【问题描述】:

我的表单已成功发布到托管在 mLab 上的数据库中,但唯一通过的是一个 ID 号和“__v”:0'。我有五个输入字段,这些字段标有与我的架构相对应的名称。有什么想法吗?

这是我的表格:

<form action="/events" method="POST">
<fieldset>
    <legend>New Event</legend>

    <div class="form-1">
        <div>
            <label for="title">Title</label>
            <input type="text" id="title" name="title" placeholder="Whale Watching">
        </div>
        <div>
            <label for="date">Date</label>
            <input type="text" id="date" name="date" placeholder="7/13">
        </div>
        <div>
            <label for="date">Time</label>
            <input type="text" id="time" name="time" placeholder="9:00am">
        </div>
        <div>
            <label for="price">Price</label>
            <input type="text" id="price" name="price" placeholder="ex. $150">
        </div>
        <div>
            <label for="capacity">Capacity</label>
            <input type="text" id="capacity" name="capacity" placeholder="ex. 12">
        </div>
    </div>
    <button type="submit">Create Event</button>

</fieldset>

我的模特:

const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
const Schema = mongoose.Schema;

const EventSchema = new Schema({
  title: String,
  time: Number,
  date: Date,
  price: Number,
  capacity: Number,
});

const Event = mongoose.model('events', EventSchema);

module.exports = Event;

我的 POST 路线:

router.post('/events', (req, res) => {
    Event.create(req.body).then(function(events){
        res.send(events);
    });
});

我的服务器文件:

const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const routes = require('./src/routes/index');

app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');

app.use(bodyParser.json());
app.use(express.static('public'));
app.use(routes);


mongoose.connect('mongodb://junk:junk@ds141242.mlab.com:41242/alaska-events');


app.listen(3000, () => {
    console.log('listening on 3000')
  });

【问题讨论】:

  • 请编辑以显示您的内容插入代码和后续查询。还有:你有没有直接做原生mongodbfind()看看实际存储了什么?
  • 我可能遇到了麻烦,因为我不确定前两个是什么意思。 Find 包含在我的 get 路径中,如下所示:router.get('/', function(req, res){ Event.find({}).then(function(events){ res.render('index'); }); });
  • 能否添加接收 POST 并将数据插入数据库的代码部分?
  • 添加了 POST 路由!
  • 还发布您启动快速服务器和注册中间件的代码。

标签: javascript mongodb forms mongoose


【解决方案1】:

由朋友回答。我正在提交老式的表单数据,但没有包含

app.use(bodyParser.urlencoded({ extended: false }))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-23
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 2015-02-05
    • 2012-12-08
    相关资源
    最近更新 更多