Node.js 使用mongoDB和socket.io处理express中的POST

Node.js 使用mongoDB和socket.io处理express中的POST,node.js,mongodb,express,socket.io,Node.js,Mongodb,Express,Socket.io,我有一个非常奇怪的问题,我将尝试解释它: 我向服务器发送一个POST请求,并将主体保存在DB中,我已将这些函数导出到一个单独的文件中。既然我不能在我的./database.js中要求('socket.io'),我又如何发出通过套接字保存的内容呢 下面是一个片段: var app = require('express')(); var database = require('./database'); var serv = require('http').createServer(app); va

我有一个非常奇怪的问题,我将尝试解释它: 我向服务器发送一个POST请求,并将主体保存在DB中,我已将这些函数导出到一个单独的文件中。既然我不能在我的./database.js中要求('socket.io'),我又如何发出通过套接字保存的内容呢

下面是一个片段:

var app = require('express')();
var database = require('./database');
var serv = require('http').createServer(app);
var socket = require('socket.io')(serv);
....

app.post('/test', function(req, res){
    database.save(model, req.body, res); //it saves the body to mongo and it works
    *edit//If I paste the code of database.save() here as is I can invoke emit
    //Here I want to emit the same data too
    //If I use the following I am receiving Error: Can't set headers after they are sent.
     socket.emit('value', JSON.stringify(req.body));
};

我认为这与插座无关。显示您的
数据库.save()
函数。我怀疑您多次在那里执行
res.json()
。@ankitgokale问题是我不知道如何从外部文件传递emit。如果我将代码database.save()粘贴到post函数中,我可以毫无问题地调用emit。不幸的是,这种解决方案使得代码很难理解,这就是为什么我一直将块组织在单独的文件中。