2017-05-06 97 views
0

我正在尝试构建捐赠表单。我的代码如下 server.js架构不是构造函数

const express = require('express'); 
const bodyParser = require('body-parser'); 

var {mongoose} = require('./db/db.js'); 
// var {Form} = require('./models/form.js'); 
var {Form} = require('./models/schema.js'); 
var app = express(); 
app.use(bodyParser.json()); 


app.get('/', function(req, res) { 
    res.send('ok'); 
}); 
//private 
app.get('/form', (req, res) => { 
    mongoose.model('Form').find((err, form) => { 
     res.send(form); 
    }); 
}); 
//makes new member 
app.post('/form', (req, res) => { 
    var newMember = new Form({ 
    firstName: req.body.firstName, 
    lastName: req.body.lastName, 
    email: req.body.email, 
    phoneNumber: req.body.phoneNumber, 
    donation: req.body.donation, 
    shirt: req.body.shirt 
    }); 
    newMember.save().then((doc) => { 
    res.send(doc); 
    }, (e) => { 
    res.status(400).send(e); 
    }); 
}); 

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

和表单模型

const mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var formSchema = new Schema({ 
    firstName: { 
    type: String, 
    required: true, 
    minlength: 1, 
    trim: true 
    }, 
    lastName: { 
    type: String, 
    required: true, 
    minlength: 1, 
    trim: true 
    }, 
    email: { 
    type: String, 
    required: true, 
    minlength: 1, 
    trim: true 
    }, 
    phoneNumber: { 
    type: Number, 
    trim: true, 
    minlength: 7, 
    required: false 
    }, 
    donation: { 
    type: Number, 
    required: true 
    }, 
    shirt: { 
    type: Boolean 
    } 
}); 
var form = mongoose.model('Form',formSchema); 
module.exports = {form}; 

当我运行的GET请求,我得到数据库中的所有数据,但是当我发送POST请求我得到错误“TypeError:Form在app.post(.../server/server.js:22:19)”不是构造函数 “。我如何解决这个错误?我认为这个错误来自于我如何调用新窗体,但是我对代码做的所有调整似乎都无法解决它。

回答

0

您正在输出物品{form:form},请注意情况。但是您正在导入并将其解构为Form。更改为小写:

var {form} = require('./models/schema.js'); 
... 
var newMember = new form({...}); 

或者你也可以映射到一个新的varaible名字而descructurting,如果你想保持它作为Form

var {form : Form} = require('./models/schema.js');