Javascript 将数据从mongodb传递到我的前端应用程序

Javascript 将数据从mongodb传递到我的前端应用程序,javascript,node.js,mongodb,socket.io,mean-stack,Javascript,Node.js,Mongodb,Socket.io,Mean Stack,我在web服务器上有一个MongoDB,我有一个Mean stack web应用程序。在MongoDB中,我有一堆数据要传递给我的web应用程序。我已经研究了各种选择,但我有点不确定该采取哪种途径来实现这一点。我考虑过使用socket.io在web服务器上设置一个侦听器,以打开与数据库的连接,然后进行API调用或直接数据库连接以返回数据 我应该补充一点,我的应用程序基于mean.io样板代码 我的问题是,我需要将socket.io代码放在堆栈中的什么位置 在我的应用程序根目录中包含socket.

我在web服务器上有一个MongoDB,我有一个Mean stack web应用程序。在MongoDB中,我有一堆数据要传递给我的web应用程序。我已经研究了各种选择,但我有点不确定该采取哪种途径来实现这一点。我考虑过使用socket.io在web服务器上设置一个侦听器,以打开与数据库的连接,然后进行API调用或直接数据库连接以返回数据

我应该补充一点,我的应用程序基于mean.io样板代码

我的问题是,我需要将socket.io代码放在堆栈中的什么位置

在我的应用程序根目录中包含socket.io代码,还是只在需要将数据从web服务器传递到应用程序的包/模块中包含socket.io代码


最后,socket.io甚至是首选的路径吗?是否有其他更合理的方法来实现这一点,如express.js?

您应该在express中创建一个路由,然后使用http模块从angular SPA请求该路由,如$http ou Restangular。
看看这篇文章

您应该在Express中创建一条路由,然后使用http模块(如$http ou RESTANGLAR)从angular SPA请求该路由。
请看这篇文章

除非您希望实时、稳定、持久地将信息从数据库流到前端,否则没有必要使用socket.io

首先,在express应用程序中,使用
https://github.com/mongodb/node-mongodb-native
。然后,您只需为要发送到的数据设置一个JSON端点路由。然后,需要数据的客户端网页只需向JSON页面发送一个XHR请求

编辑:OP不想使用socket.io

如果要使用socket.io,必须在服务器和客户机上都包含它

服务器端:

const express = require('express');
const app = express();
const server = require('http').Server(app);
// socket.io
const io = require('socket.io').listen(server);
// handling socket.io requests
io.on('connection', (socket) => {
  log.info('new connection.');
  socket.emit('data', {/** whatever data you need to send **/});
  socket.on('disconnect', (e) => {
    log.info('user disconnected.');
  });
});
客户端:

确保在html文件中包含socket.io(从网站获取)。然后,在客户端js中:

const socket = io();
socket.on('connect', () => {
  console.log('connected to server.');
});
socket.on('disconnect', () => {
  console.log('disconnected.');
});
socket.on('data', (data) => {
    // this is where you receive the data
    // do something with your data
});

没有必要使用socket.io,除非您希望实时、恒定、持久地将信息从数据库流到前端

首先,在express应用程序中,使用
https://github.com/mongodb/node-mongodb-native
。然后,您只需为要发送到的数据设置一个JSON端点路由。然后,需要数据的客户端网页只需向JSON页面发送一个XHR请求

编辑:OP不想使用socket.io

如果要使用socket.io,必须在服务器和客户机上都包含它

服务器端:

const express = require('express');
const app = express();
const server = require('http').Server(app);
// socket.io
const io = require('socket.io').listen(server);
// handling socket.io requests
io.on('connection', (socket) => {
  log.info('new connection.');
  socket.emit('data', {/** whatever data you need to send **/});
  socket.on('disconnect', (e) => {
    log.info('user disconnected.');
  });
});
客户端:

确保在html文件中包含socket.io(从网站获取)。然后,在客户端js中:

const socket = io();
socket.on('connect', () => {
  console.log('connected to server.');
});
socket.on('disconnect', () => {
  console.log('disconnected.');
});
socket.on('data', (data) => {
    // this is where you receive the data
    // do something with your data
});

实时持久流实际上是我需要的一个功能,所以听起来socket.io是我想要采取的正确路线。我很欣赏这一点,它让事情变得更加清楚。我想要传递给前端应用程序的数据实际上是在一个单独的mongodb服务器上。我需要通过这样的调用从客户端文件连接到该服务器--var socket=io.connect('server address here');我的问题是此连接在我使用的堆栈中的位置否,socket.io需要连接到express web服务器,而不是mongo db服务器。然后将express web服务器连接到Mongo db服务器。使用我答案中链接中的NodeJS API,您需要从数据库获取数据,并通过回调将其传递到socket.io。好的,这正是我所需要的。你填补了我脑海中的空白。谢谢,wizardreal-time persistent streaming实际上是我需要的一项功能,所以它听起来像socket.io是我想要采取的正确路线。我很欣赏这一点,它让事情变得更加清楚。我想要传递给前端应用程序的数据实际上是在一个单独的mongodb服务器上。我需要通过这样的调用从客户端文件连接到该服务器--var socket=io.connect('server address here');我的问题是此连接在我使用的堆栈中的位置否,socket.io需要连接到express web服务器,而不是mongo db服务器。然后将express web服务器连接到Mongo db服务器。使用我答案中链接中的NodeJS API,您需要从数据库获取数据,并通过回调将其传递到socket.io。好的,这正是我所需要的。你填补了我脑海中的空白。谢谢你,巫师