sql >> データベース >  >> NoSQL >> MongoDB

node.jsはmongodbのメッセージを保存しますか?

    私はそれを試しました、そして以下の修正されたバージョンは動作します!主な変更点は、mongooseスキーマコードをサーバー側に配置し、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>
    



    1. MongoDB Atlasに接続できません(queryTxt ETIMEOUT)

    2. mongodb/mongoidを使用したランタイム変更モデル

    3. MongoDBとGoogleCloudFunctions VPCピアリング?

    4. すべてのRedisデータベースを一覧表示する方法は?