两个服务器可以访问一个公共的mongoDB数据库吗?
Can two servers access a common mongoDB database
>我在端口 3000 和 4000 上创建了 2 个网络服务器。其中一个网络服务器创建了一个数据库,并有3个集合。
显示数据库 本地 0.000GB sensor_db 0.000GB 使用sensor_db 切换到数据库sensor_db 显示收藏 传感器 模板组 模板
第二台服务器可以访问创建的数据库吗? 如果是,我无法访问集合。它有什么语法吗?
第一台服务器:
var express = require('express');
var app= express();
var path = require('path');
var bodyParser= require('body-parser');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/sensor_db');
var Schema = mongoose.Schema;
var sensorSchema = new Schema({
value:{ type:Number, default:0},
format:{type:String, default:"default"},
id:{type:Number,required:true,unique:true},
description:{type:String},
type:{type:String},
groupId:{type:Number},
users:{type:Array,default:[]},
admin:{type:String,default:'Undefined'},
status:{type:String,default:'Undefined'},
owner:{type:String,default:'Undefined'},
templateId:{type:Number}
});
var Sensor = mongoose.model('Sensor',sensorSchema);
app.get('/sensorlist',function(req,res) {
console.log("I recieved a GET /sensorlist request");
Sensor.find(function(err,data){
if (err) return console.error(err);
console.log(data);
res.json(data)
});
});
app.post('/check/health',function(req,res){
socket.emit('data', 'I need your health status', function ack(data) {
console.log('data emit was acknowledged by Monitoring Server:', data);
return res.json(data);
});
});
第二台服务器:
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var express = require('express');
io.on('connection', function(socket){
console.log('connection received from Provisioning');
// To get messages from Provisioning server
socket.on('data', function(data, ack) {
console.log('Message from provision is : ' + ': ' + data);
ack('here is your data - 1111');
console.log("Trying to access the Sensor_DB Database");
Sensor.find(function(err,data){
if(err) return console.error(err);
console.log(data);
//res.json(data);
});
});
});
server.listen(4000, function(){
console.log('socket.io server listening on *:4000');
});
我收到错误 - 未定义传感器
非常感谢杰西
一旦它连接到数据库,我试图支付集合,但收到此错误消息:无法读取 null 的属性"hasListCollectionsCommand"
var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/sensor_db') ;
console.log("successfully connected to the database");
//mongoose.connection.db
mongoose.connection.db.listCollections().toArray(function(err, names) {
if (err) {
console.log(err);
}
else {
names.forEach(function(e,i,a) {
mongoose.connection.db.dropCollection(e.name);
console.log("--->>", e.name);
});
}
});
两个不同的服务器不能共享传感器对象的同一实例。
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/sensor_db');
var Schema = mongoose.Schema;
var sensorSchema = new Schema({
value:{ type:Number, default:0},
format:{type:String, default:"default"},
id:{type:Number,required:true,unique:true},
description:{type:String},
type:{type:String},
groupId:{type:Number},
users:{type:Array,default:[]},
admin:{type:String,default:'Undefined'},
status:{type:String,default:'Undefined'},
owner:{type:String,default:'Undefined'},
templateId:{type:Number}
});
var Sensor = mongoose.model('Sensor',sensorSchema);
此代码声明一台服务器的架构,而不是第二台服务器的架构。 因此,您还必须在第二台服务器中声明实例。
与 mongo 数据库无关的问题是传感器实例在第二个服务器中没有任何声明。
相关文章:
- 我可以使用Python和NodeJS中相同的MongoDB数据库吗
- 为什么我从一个空的mongodb数据库中获取数据
- 如何从Meteor内部获取当前连接的MongoDB数据库的URL
- 将 .exr 高度图解析为 mongoDB 数据库
- 两个服务器可以访问一个公共的mongoDB数据库吗?
- 使用Meteor.js使用多个Mongodb数据库
- 如何让变量保存 mongodb 数据库
- 如何使用NodeJS驱动程序创建新的MongoDb数据库
- 正在打开MongoDB数据库
- 可以't使用backbone.js从mongodb数据库中删除记录
- 仅在完成两个MongoDB数据库查询时呈现页面
- 从node.js向mongoDB数据库中插入数据
- 在Nodejs中,何时关闭MongoDB数据库连接
- 不能使用Meteor-Blaze访问mongodb数据库
- Node JS读取文件插入到mongodb数据库
- 从整个mongodb数据库中删除匹配的文档
- Id在mongodb数据库中保存为[object]
- 如何种子MongoDB数据库没有得到'null''s
- 使用mongodb数据库处理节点中的get请求数据
- mongoDB数据库分析器查询和getmore选项