使用Node将post数据插入mongoDB

时间:2016-03-03 06:33:20

标签: javascript node.js mongodb

我是节点JS和mongo的新手。

我正在一个将用户信息存储在我的数据库中的个人网站上工作。

为简单起见,我想说我在玉器中有以下形式......

form(class="inputs", action="/login", method="post")
    input(type="text", name="email",class="form-control", id="emailLogin", placeholder="Queen's Email")

我已经设置了一个数据库,我可以使用以下javascript ...

连接到它
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/user');
var db = mongoose.connection;

db.on('error', console.error);
db.once('open', function() {
    // Create your schemas and models here.
});

我希望为使用上述表单注册的每个用户存储来自email的输入。

我猜我首先要创建一个可能看起来像这样的架构,但我不确定......

var Schema = mongoose.Schema;

var userSchema = new Schema({
    email: String
});
//I think I have to create a model too?

要获得POST数据,我想我需要一些看起来像这样的代码......

app.post('/login', function(request, response){
//I am not sure what to put inside
});

我的问题是,有人可以告诉我如何将所有这些实现在一起,这样每次用户注册他们的电子邮件时,它都会保存在数据库中。很难对此进行研究,并多次尝试和失败。

修改

这是我的index.js文件...

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'QChat' });
});

module.exports = router;

此外,这是routes目录中名为users.js的另一个文件,我不确定它的用途是什么......

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res, next) {
  res.send('respond with a resource');
});

module.exports = router;

2 个答案:

答案 0 :(得分:6)

以下是一些示例代码,希望它能为您提供帮助。

var userSchema = new Schema({
    email: String
});

var User = mongoose.model('User', userSchema);

app.post('/login', function(request, response){
    var u = new User({
        email: request.body.name
    });

    u.save(function(err) {
        if (err)
           throw err;
        else 
           console.log('save user successfully...');
    });
});

另外,为了正确解析帖子网址,可以在此处使用express,示例代码如下所示。

var bodyParser = require('body-parser')
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
  extended: true
})); 

答案 1 :(得分:1)

user.model.js

var mongoose = require('mongoose')
    , Schema = mongoose.Schema
    , Q = require('q')
    ;

var UserSchema = mongoose.Schema({
    email: String,
})

UserSchema.methods.Save = function() {
    return Q.ninvoke(this, 'save');
}

var User = mongoose.model('User', UserSchema);

user.controller.js

var mongoose = require('mongoose')
    , User = mongoose.model('User')
    ;

app.post('/create', function(request, response){
   var user = new User();
   user.email = request.body.email;

    return user.Save().then(function(users) {
        // some code if save succeed
    }, function(err){
        // some code if save failed
    });
});