保存数据时mongodb抛出错误(拓扑被破坏) [英] mongodb throwing error while saving data (topology destroyed)

查看:80
本文介绍了保存数据时mongodb抛出错误(拓扑被破坏)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to write data to MongoDB using Node.js While writing the data, I am getting the following error in the last line. Execution logs are:

{ _id: 56e90c1292e69900190954f5, 
nfs: [ 'ebdp1', 'ebdp2', 'ebdp3', 'ebdp4' ],
snapShotTime: '2016-03-16 07:32:34' }
{ [MongoError: topology was destroyed] name: 'MongoError', message: 'topology was destroyed' }

我的代码结构是根据框架,其中Collection的架构在 appTableProdSchema.js 文件,以及 appTableProdData.js 文件中的对象数据。
Main是newMain.js

My code structure is according to the framework, where Collection's schema is in appTableProdSchema.js file, and the Object data in appTableProdData.js file. The Main is newMain.js

代码如下:
newMain.js

Code is as follows: 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

appTableProdSchema.js

var mongoose = require('mongoose');

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

appTableProdData.js

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; 

我知道为什么我的拓扑已被破坏错误?
请帮忙。

Any idea why am i getting topology destroyed error ? Please help.

推荐答案

您的

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();
    }); 
});

此代码块正在执行,因为它是异步调用。

this code block is getting executed as it is a async call.

你应该叫这个

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();
    }); 
});

这篇关于保存数据时mongodb抛出错误(拓扑被破坏)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆