我正在使用socketio和mongodb创建一个聊天应用程序来存储用户名和他的聊天消息。 当我点击“发送”按钮时,控制台显示“已插入”,执行代码没有问题,但它在数据库中存储了空值。 我的数据库名称是:“用户”,表名称是:“信息”。 请帮忙。提前。
var app=require('express')();
var server=require('http').Server(app);
var io=require('socket.io')(server);
var path=require('path');
var fs=require('fs');
var mongo=require('mongoose');
var ObjectId=require('mongodb').ObjectID;
server.listen(3000);
var MongoClient=require('mongodb').MongoClient;
var url='mongodb://localhost:27017/';
app.use(__dirname + '/public');
var mongo=require('mongodb').MongoClient;
client=require('socket.io').sockets;
app.get('/',function(req,res){
res.sendFile(path.join(__dirname + '/index.html'));
});
MongoClient.connect(url,function(err,db){
if(err)throw err;
var dbo=db.db('user');
io.on('connection',function(socket){
socket.on('chat message',function(msg){
dbo.collection('info').insert({
"name":msg.name,
"message":msg.message
},function(err,res){
if(err)throw err;
console.log('inserted');
});
});
});
});
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
$(function(){
var socket=io();
$('form').submit(function(e){
e.preventDefault();
socket.emit('chat message',$('#t').val(),$('#m').val());
$('#m').val('');
$('#t').val('');
return false;
});
});
</script>
<body>
<ul id="messages"></ul>
<form action="">
<input id="m" autocomplete="off" type="text" name="name" placeholder="Enter your name"><br>
<textarea id="t" placeholder="Enter Your Message"></textarea><br>
<button>send</button>
</form>
</body>
<style type="text/css">
#messages, textarea{
width: 20%;
height: 50px;
margin: 0;
padding: 0;
}
#m{
margin: 0;
padding: 0;
}
</style>
</html>