Javascript 将数据从mongodb传递到我的前端应用程序
我在web服务器上有一个MongoDB,我有一个Mean stack web应用程序。在MongoDB中,我有一堆数据要传递给我的web应用程序。我已经研究了各种选择,但我有点不确定该采取哪种途径来实现这一点。我考虑过使用socket.io在web服务器上设置一个侦听器,以打开与数据库的连接,然后进行API调用或直接数据库连接以返回数据 我应该补充一点,我的应用程序基于mean.io样板代码 我的问题是,我需要将socket.io代码放在堆栈中的什么位置 在我的应用程序根目录中包含socket.io代码,还是只在需要将数据从web服务器传递到应用程序的包/模块中包含socket.io代码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.
最后,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。好的,这正是我所需要的。你填补了我脑海中的空白。谢谢你,巫师