Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 保存数据时mongodb抛出错误(拓扑已破坏)_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript 保存数据时mongodb抛出错误(拓扑已破坏)

Javascript 保存数据时mongodb抛出错误(拓扑已破坏),javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在尝试使用Node.js将数据写入MongoDB 在写入数据时,我在最后一行遇到以下错误。 执行日志包括: { _id: 56e90c1292e69900190954f5, nfs: [ 'ebdp1', 'ebdp2', 'ebdp3', 'ebdp4' ], snapShotTime: '2016-03-16 07:32:34' } { [MongoError: topology was destroyed] name: 'MongoError', message: 'topology

我正在尝试使用Node.js将数据写入MongoDB 在写入数据时,我在最后一行遇到以下错误。 执行日志包括:

{ _id: 56e90c1292e69900190954f5, 
nfs: [ 'ebdp1', 'ebdp2', 'ebdp3', 'ebdp4' ],
snapShotTime: '2016-03-16 07:32:34' }
{ [MongoError: topology was destroyed] name: 'MongoError', message: 'topology was destroyed' }
我的代码结构是基于框架的,其中集合的模式位于
appTableProdSchema.js
文件中,对象数据位于
appTableProdData.js
文件中。 Main是newMain.js

var mongoose = require('mongoose');
var moment = require('moment');
var nfs_check="";
var promises = [];

var nodes = ["ebdp1","ebdp2", "ebdp3", "ebdp4"];

mongoose.connect('mongodb://localhost:27017/test');
var db = mongoose.connection;
var storageData = require('./appTableProdData.js');
var storageDataSchema = require('./appTableProdSchema.js');
var obj = {};
obj.snapShotTime = moment().utc().format("YYYY-MM-DD HH:mm:ss");
obj.nfs = nodes;
db.once('open', function() {
    var mongoData = new storageData();
    mongoData.fill(obj);
    var promise = new storageDataSchema(mongoData.getInformation());
    console.log(promise.toString());
    promise.save(function (err, promise) {
            if (err) return console.error(err);
            promise.speak();
        }); 
});
mongoose.disconnect();
代码如下: newMain.js

var mongoose = require('mongoose');
var moment = require('moment');
var nfs_check="";
var promises = [];

var nodes = ["ebdp1","ebdp2", "ebdp3", "ebdp4"];

mongoose.connect('mongodb://localhost:27017/test');
var db = mongoose.connection;
var storageData = require('./appTableProdData.js');
var storageDataSchema = require('./appTableProdSchema.js');
var obj = {};
obj.snapShotTime = moment().utc().format("YYYY-MM-DD HH:mm:ss");
obj.nfs = nodes;
db.once('open', function() {
    var mongoData = new storageData();
    mongoData.fill(obj);
    var promise = new storageDataSchema(mongoData.getInformation());
    console.log(promise.toString());
    promise.save(function (err, promise) {
            if (err) return console.error(err);
            promise.speak();
        }); 
});
mongoose.disconnect();
appTableProdSchema.js

var mongoose = require('mongoose');

module.exports = mongoose.model('AppTableProd', {
    snapShotTime : String,
    nfs: Array    
});
appTableProdData.js

var storageData = function() {
    this.data =  {
            snapShotTime: null,
            nfs: null    
    };
    this.fill = function(resp) {
        this.data.snapShotTime = resp.snapShotTime;
        this.data.nfs = resp.nfs;
    };
    this.getInformation = function() {
        return this.data;
    };
};
module.exports = storageData; 
你知道为什么拓扑结构被破坏了吗?
请提供帮助。

这是一个常见问题,mongoose正在异步运行,您不能使用
mongoose.disconnect()在脚本末尾,这是一种同步方式

拓扑被破坏
表示您在尝试在数据库中插入内容的同时正在关闭连接。这是他正在启动的nodej的行为(与所有异步进程并行)


在这种情况下,请尝试删除
mongoose.disconnect()。或者在关闭连接之前确保没有对mongodb的异步调用。

这是一个常见问题,mongoose正在异步运行,您不能使用
mongoose.disconnect()在脚本末尾,这是一种同步方式

拓扑被破坏
表示您在尝试在数据库中插入内容的同时正在关闭连接。这是他正在启动的nodej的行为(与所有异步进程并行)

在这种情况下,请尝试删除
mongoose.disconnect()。或者在关闭连接之前确保没有对mongodb的异步调用。

mongoose.disconnect();
以前有人打过电话吗

db.once('open', function() {
var mongoData = new storageData();
mongoData.fill(obj);
var promise = new storageDataSchema(mongoData.getInformation());
console.log(promise.toString());
promise.save(function (err, promise) {
        if (err) return console.error(err);
        promise.speak();
    }); 
});
正在执行此代码块,因为它是一个异步调用

你应该叫这个

mongoose.disconnect();
像这样

 db.once('open', function() {
var mongoData = new storageData();
mongoData.fill(obj);
var promise = new storageDataSchema(mongoData.getInformation());
console.log(promise.toString());
promise.save(function (err, promise) {
        if (err) return console.error(err);
        promise.speak();
       mongoose.disconnect();
    }); 
});
你的

以前有人打过电话吗

db.once('open', function() {
var mongoData = new storageData();
mongoData.fill(obj);
var promise = new storageDataSchema(mongoData.getInformation());
console.log(promise.toString());
promise.save(function (err, promise) {
        if (err) return console.error(err);
        promise.speak();
    }); 
});
正在执行此代码块,因为它是一个异步调用

你应该叫这个

mongoose.disconnect();
像这样

 db.once('open', function() {
var mongoData = new storageData();
mongoData.fill(obj);
var promise = new storageDataSchema(mongoData.getInformation());
console.log(promise.toString());
promise.save(function (err, promise) {
        if (err) return console.error(err);
        promise.speak();
       mongoose.disconnect();
    }); 
});

我移除了猫鼬。断开连接();但还是一样的问题(hi@aiman,我也有同样的问题,但对于环回,它使用自己的mongodb连接器,该连接器使用node.js的本机mongodb驱动程序,我不确定如何处理它,你找到解决方案了吗?是的,解决方案是由“Mustafa Mamun”提供的,我删除了mongoose.disconnect();但仍然存在相同的问题:(嗨@aiman,我也有同样的问题,但对于环回,它使用自己的mongodb连接器,它使用node.js的本机mongodb驱动程序,我不知道该怎么办,你找到解决方案了吗?是的,解决方案由“Mustafa Mamun”提供