Я разрабатываю приложение для простого чата, и я хочу хранить сообщения в mongoDb. , но я получаю ошибку, когда запускаю этот код. не может прочитать свойство «_id» неопределенного. Я уже создаю один чат для вызова коллекций.Вставьте данные в mongodb с помощью Socket.io
var MongoClient= require('mongodb').MongoClient;
var assert=require('assert');
var ObjectId= require('mongodb').ObjectId;
var bodyParser= require('body-parser'); \t
var express = require('express'),
\t app=express();
\t server=require('http').createServer(app),
\t io= require('socket.io').listen(server),
\t app.use(bodyParser.urlencoded({extended:false}));
\t var mongo=require('mongodb');
\t users = {};
\t url='mongodb://localhost:27017/anant';
server.listen(9000, function(){
\t var host= server.address().address;
\t var port=server.address().port;
\t console.log("save app listen on http://%s:%s", host , port);
});
/*var server = app.listen(9000, function(){
\t var host= server.address().address;
\t var port=server.address().port;
\t console.log("save app listen on http://%s:%s", host , port);
});*/
app.get('/', function(req, res){
\t res.sendFile(__dirname + '/index.html');
});
io.sockets.on('connection', function(socket){
\t socket.on('new user', function(data , callback){
\t \t if(data in users){
\t \t \t \t callback(false);
\t \t }else{
\t \t \t callback(true);
\t \t \t socket.nickname= data;
\t \t \t users[socket.nickname]= socket;
\t \t \t updatenicknames();
\t \t }
\t });
\t
\t io.sockets.on('send request', function(data , callback){
\t \t \t var name=data;
\t \t \t console.log(data);
\t });
\t socket.on('send message', function(data , callback){
\t \t var msg=data.trim();
\t \t if(msg.substr(0,3) === '/w '){
\t \t \t \t msg = msg.substr(3);
\t \t \t \t var \t ind = msg.indexOf(' ');
\t \t \t \t console.log(ind);
\t \t \t \t console.log("got it after ind ");
\t \t \t \t if(ind !== -1)
\t \t \t \t {
\t \t \t \t \t var name=msg.substr(0, ind);
\t \t \t \t \t var msg=msg.substring(ind + 1);
\t \t \t \t \t console.log(name);
\t \t \t \t \t console.log(msg);
\t \t \t \t \t if(name in users){
\t \t \t \t \t \t console.log("got it in if name condition");
\t \t \t \t \t \t users[name].emit('wishper', {msg: msg , nick: socket.nickname});
\t \t \t \t \t console.log('whisper..! \t ');
\t \t \t \t \t } else
\t \t \t \t \t {
\t \t \t \t \t \t callback("enter a vlid user");
\t \t \t \t \t }
\t \t \t \t } else{
\t \t \t \t \t \t callback('please enter message for your wishper');
\t \t \t \t }
\t \t }else {
\t \t insertData(data);
\t \t io.sockets.emit('new message', {msg: msg , nick: socket.nickname});
\t \t } \t
\t }); \t
\t function updatenicknames(){
\t \t \t io.sockets.emit('usernames', Object.keys(users));
\t }
\t function insertData(data)
\t { \t
\t
\t \t \t MongoClient.connect(url, function(err, db){
\t \t \t console.log(data);
\t \t \t db.collection('chat').save(data.msg , (err,result)=>{
\t \t \t \t if(err){
\t \t \t \t \t console.log("not inserted");
\t \t \t \t }else {
\t \t \t \t \t console.log("inserted");
\t \t \t \t }
\t \t \t });
\t \t });
\t \t
\t }
\t socket.on('disconnect', function(data){
\t \t if(!socket.nickname) return;
\t \t delete users[socket.nickname];
\t \t updatenicknames();
\t });
});
ya i замедляет ошибку благодаря #schankam –