node.js - 在使用nodejs的mongodb官方库 更新一个文档时出现 topology was destroyed 怎么办?
阿神
阿神 2017-04-17 14:27:41
[Node.js讨论组]

有这么一个文档结构:

var doc1 = {

type:"floder",
name:"/",
contain:[
    {type:"file",name:"1.txt",src:"/",size:'70KB',upLoadTime:'2015-07-01 23:40',realName:'a.html'},
    {
        type:"floder",name:"base",contain:[
            {type:"floder",name:"b",contain:[
                {type:"file",name:"index.html",src:"/base",size:'3.6KB',upLoadTime:'2015-07-01 23:40',realName:'b.txt'},
            ]},
            {type:"file",name:"index.html",src:"/base",size:'3.6KB',upLoadTime:'2015-07-01 23:40',realName:'b.txt'},
            {type:"file",name:"base.js",src:"/base",size:'3KB',upLoadTime:'2015-07-01 23:40',realName:'c.txt'}
        ]
    }
]

};

doc是findOne()得到的一个文档,然后我对doc做了一个更改:
doc.contain.push({..});

之后更新doc:
collection.updateOne({_id:doc._id},{$set:doc},function(err){

    mongo.close();
    if(err){
        console.log(err);
        return callback(err);
    }
callback(null);

});

发现报错 :topology was destroyed (拓扑结构改变)。
直接在使用shell窗口使用db.filesys.updateOne({},{$set:doc})是可以的。是因为官方库还的问题吗?
使用代码的话我必须先删除原来的doc再把刚刚更改的doc插入进去?我希望能直接更新doc。大家有没有好方法?

阿神
阿神

闭关修行中......

全部回复(1)
大家讲道理

后来发现是我之前有一句mongo.close(),不好意意思,所以可以直接使用代码。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号