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

时间:2017-06-26 18:10:14

标签: javascript node.js mongodb socket.io mean-stack

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

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

我的问题是我的堆栈中需要放置socket.io代码?

在我的应用程序的根目录中包含socket.io代码或仅在需要将数据从我的Web服务器传递到我的应用程序的包/模块中是否明智?

最后,socket.io甚至是首选的路线吗?还有另一种实现这一点的方法更有意义,例如express.js?

2 个答案:

答案 0 :(得分:1)

你应该在Express中创建一个路线,然后从你的角度SPA请求带有http模块的路线,比如$ http ou Restangular。 看一下这篇文章https://scotch.io/tutorials/setting-up-a-mean-stack-single-page-application

答案 1 :(得分:1)

除非您想要从数据库到前端的实时持续,持久的信息流,否则不需要使用socket.io。

首先在您的快递应用中,使用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
});