2016-03-03 6 views
2

Я очень новичок в узле JS и монго.Вставить данные сообщения в mongoDB с помощью узла

Я работаю над личным сайтом, который хранит информацию пользователя в моей базе данных.

Для простоты предположим, что у меня есть следующий вид нефрита ...

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 
}); 

Мой вопрос, может кто-то показать мне, как реализовать все это вместе, так что каждый раз, когда пользователь регистрируется с их электронной почты, оно сохраняется в базе данных. Очень сложно исследовать это и многократно пытались и терпели неудачу.

EDIT

Вот мой 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; 
+0

Где 'пост)' метод (? – zangw

+0

@zangw Я думаю, что вижу, что вы имеете в виду, должен ли метод post быть включен в мой индексный файл? В этом случае у меня его нет. – Bolboa

+0

Чтобы быть точнее, лучше включить 'post (''/login)' to 'use.js', я думаю, этот файл предназначен только для маршрутизации URL-адресов для пользователей? – zangw

ответ

5

Вот несколько примеров кода, надеюсь, что это может вам помочь.

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 
})); 
+0

Это выглядит хорошо, но я до сих пор не могу заставить его работать. Когда я отправляю форму, ничего не сохраняется в db – Bolboa

+0

@Bolboa, есть ли правильные данные в 'request'? – zangw

+0

Я думаю, что ваш код, должен работать, причина, по которой он не работает для меня, вероятно, это «404 Not Found», который я получаю, когда я отправляю форму – Bolboa

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 
    }); 
}); 
Смежные вопросы