2014-01-04 3 views
0

Я пытаюсь посмотреть, как работает экспресс, mongoose и mongodb, очень простым способом. Если у меня может быть коробка, введите там свое имя, отправьте его и сохраните в db, вот и все, что мне нужно. Я попытался сделать это, взяв кусочки учебников, но я застрял. Я пытался сделать это через чат и просто сохранить каждое сообщение. Если вы можете заставить мой пример работать или иметь свой собственный, в любом случае, я просто помогу мне увидеть что-то, что работает. Тогда у меня может быть основа того, что работает и может добавить к нему. Я вижу много учебников и всего остального, но не просто для людей, это всегда большой проект, который вы теряете где-то, надеюсь, это будет полезно и другим людям, это много, со всем, с узлом и всеми его друзьями , В моем примере я не получаю никаких ошибок, которые я вижу, но, возможно, некоторые. И я смотрю в чате db, чтобы видеть сообщения, используя db.messages.find(), но там нет.node.js express mongodb сохранить сообщения?

мой HTML

<html> 
<head> 
<title>Chat with socket.io and node.js</title> 
<style> 
#chat{ 
height:500px; 
} 
</style> 
</head> 
<body> 
<div id="chat"></div> 
<form id="send-message"> 
<input size="35" id="message"></input> 
<input type="submit"></input> 
</form> 

<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script src="/socket.io/socket.io.js"></script> 
<script> 
jQuery(function($){ 
var socket = io.connect(); 
var $messageForm = $('#send-message'); 
var $messageBox = $('#message'); 
var $chat = $('#chat'); 

$messageForm.submit(function(e){ 
e.preventDefault(); 
socket.emit('send message', $messageBox.val()); 
$messageBox.val(''); 
}); 

socket.on('new message', function(data){ 
$chat.append(data + "<br/>"); 
}); 
}); 

var chatSchema = mongoose.Schema({ 
msg: String, 
created: {type: Date, default: Date.now} 
}); 

var Chat = mongoose.model('Message', chatSchema); 

var newMsg = new Chat({msg: msg}); 
     newMsg.save(function(err){ 
      if(err) throw err; 
});    


</script> 
</body> 
</html> 

приложение

var mongoose = require('mongoose') 
var express = require('express'), 
app = express(), 
server = require('http').createServer(app), 
io = require('socket.io').listen(server); 

server.listen(3000); 

app.get('/', function(req, res){ 
res.sendfile(__dirname + '/index.html'); 
}); 

io.sockets.on('connection', function(socket){ 
socket.on('send message', function(data){ 
io.sockets.emit('new message', data); 
}); 
}); 

mongoose.connect('mongodb://localhost/chat', function(err){ 
if(err){ 
console.log(err); 
} else{ 
    console.log('Connected to mongodb!'); 
} 
}); 
+0

Вы можете исправить отступы в коде? – JohnnyHK

+0

@JohnnyHK извините, не знаю как. – user3081020

+0

Вставьте пробелы в отступ. – JohnnyHK

ответ

2

Я пробовал и модифицированную версию сильфона работ! Основные изменения, в которых помещается код схемы мангуста на стороне сервера, и отсылать содержимое текстового поля на сервере только после успешного сохранения в базе данных Mongo.

Посмотрите также на сайте mean.io для ознакомления со стеком MEAN, сообщите мне, если у вас есть вопросы по коду.

Модифицированные server.js:

var mongoose = require('mongoose') 
var express = require('express'), 
app = express(), 
server = require('http').createServer(app), 
io = require('socket.io').listen(server); 

server.listen(3000); 

app.get('/', function(req, res){ 
    res.sendfile(__dirname + '/test.html'); 
}); 

io.sockets.on('connection', function(socket){ 
    socket.on('send message', function(data){ 

     var newMsg = new Chat({msg: '' + data}); 

     console.log('saving newMsg: ' + newMsg); 

     newMsg.save(function(err){ 
      console.log('saved, err = ' + err); 
      if(err) throw err; 
      console.log('echoeing back data =' + data); 
      io.sockets.emit('new message', data); 
     }); 

    }); 
}); 

var chatSchema = mongoose.Schema({ 
    msg: String, 
    created: {type: Date, default: Date.now} 
}); 

var Chat = mongoose.model('Message', chatSchema); 



mongoose.connect('mongodb://localhost/test', function(err){ 
if(err){ 
console.log(err); 
} else{ 
    console.log('Connected to mongodb!'); 
} 
}); 

Это HTML-страница:

<html> 
    <head> 
     <title>Chat with socket.io and node.js</title> 
     <style> 
      #chat{ 
       height:500px; 
      } 
     </style> 
    </head> 
    <body> 
     <div id="chat"></div> 

     <form id="send-message"> 
      <input size="35" id="message"></input> 
      <input type="submit"></input> 
     </form> 

     <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
     <script src="/socket.io/socket.io.js"></script> 

     <script> 
      jQuery(function($){ 
       var socket = io.connect(); 
       var $messageForm = $('#send-message'); 
       var $messageBox = $('#message'); 
       var $chat = $('#chat'); 

       $messageForm.submit(function(e){ 
        e.preventDefault(); 
        socket.emit('send message', $messageBox.val()); 
        $messageBox.val(''); 
       }); 

       socket.on('new message', function(data){ 
        console.log('Received data: ' + data); 
        $chat.append(data + "<br/>"); 
       }); 
      }); 

     </script> 

    </body> 
</html> 
+0

ty! Я использую chat db и пытаюсь использовать db.messages.find() и нет там? – user3081020

+0

Я изменил базу данных для проверки в коде выше, а не в базе данных чата. использовать тест; а затем db.messages.find(), сообщения должны быть там. –

+0

У меня есть mongoose.connect ('mongodb: // localhost/test вместо mongoose.connect (' mongodb: // localhost/chat в моем коде выше –

Смежные вопросы