为什么我不能使用Schema重命名集合?

时间:2019-08-09 16:45:55

标签: javascript mongodb schema

我想在架构中重命名集合,但是mongodb继续使用旧名称。

我一直在将模式名称设置为“ __ filter s ”运行代码,但是现在我需要将名称更改为“ __ filter '。 (不是复数)

创建过滤器时,mongodb创建一个'__filter s '集合

这就是我设置原始模式的方式,请注意复数“ filter s

// create the schema
const FiltersSchema = new Schema({

    test: {type: String, required: true},
})

module.exports = Filters = mongoose.model('__filters', FiltersSchema)

现在,我要使集合的名称为单数'__filter'。这是我要使用的新架构:注意:现在全部为单数

// create the schema
const FilterSchema = new Schema({

    test: {type: String, required: true},
})

module.exports = Filter = mongoose.model('__filter', FilterSchema)

这是我正在使用的代码:

const Filter = require('./Filter');

createFilter = ( test ) => {
    return new Promise((resolve, reject) =>{

        var errors = {};

        Filter.findOne( {test:test} )
        .then(found => {

            if(found) {
                errors.err = {'inUse':'already created'};
                console.log(errors);
                reject(errors);
            } else {

                const newFilter = new Filter({
                    test: test
                });

                newFilter.save()
                .then(f => {
                    if(debugThis){
                        console.log(' ');
                        console.log(' created ' + JSON.stringify(f));
                        console.log(' ');
                    }
                    resolve(f);
                })
                .catch(err => {
                    errors.exception = {'save':err};
                    console.log(errors);
                    reject(errors);
                });

            }
        })
        .catch(err => {
            errors.exception = {'findOne':err};
            reject(errors);
        })

    });
};

几乎就像某个地方有一些高速缓存在保留较旧的“过滤器”架构。

我需要清除一些东西吗?

我什至尝试过,但是也没用

let dbc = mongoose.connection.db;
dbc.collection('filters').rename('filter')
.then()
.catch(err =>{});

我关闭DevStudio并重新启动它。

我已经在MongoDB中创建了一个新数据库

我重新启动了MongoDB服务器服务

似乎没有什么可以将'__filters'重置为'__filter'

无奈之下,我从架构中删除了_filter,它崩溃了并将其吐出:

 TypeError: Cannot read property 'toLowerCase' of undefined
at pluralize 
 (\node_modules\mongoose-legacy-pluralize\index.js:85:13)

猫鼬会自动使名字复数吗?

好吧,我把橄榄油倒掉了...猫鼬使东西复数...他们多么'好'做到这一点...我不想复数名字...

1 个答案:

答案 0 :(得分:0)

OMG ...我简直不敢相信...我4个小时的时间浪费在了这些愚蠢的东西上:

Why does mongoose always add an s to the end of my collection name