首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongoose/Node服务器重启和复制

Mongoose/Node服务器重启和复制
EN

Stack Overflow用户
提问于 2014-07-23 11:55:11
回答 2查看 993关注 0票数 0

好的,经过大量的试验和错误,我已经确定,当我删除一个集合,然后通过我的应用程序重新创建它时,唯一的不起作用,直到我重新启动我的本地节点服务器。这是我的模式

代码语言:javascript
复制
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var Services = new Schema ({ 
    type : {type : String},
    subscriptionInfo : Schema.Types.Mixed,
    data : Schema.Types.Mixed
},{_id:false});

var Hashtags = new Schema ({
    name: {type : String},
    services : [Services]
},{_id:false});

var SubscriptionSchema = new Schema ({
    eventId : {type: String, index: { unique: true, dropDups: true }}, 
    hashtags : [Hashtags]
});

module.exports = mongoose.model('Subscription', SubscriptionSchema);

这是我的路线。

代码语言:javascript
复制
router.route('/')
        .post(function(req, res) {
            var subscription = new subscribeModel();
            subscription.eventId = eventId;
            subscription.save(function(err, subscription) {
                if (err)
                    res.send(err);
                else
                    res.json({
                        message: subscription
                    });
            });
        })

如果我删除集合,然后命中上面看到的/subscribe端点,它将创建条目,但不会接受重复的条目。直到我重新启动服务器,它才开始支持它。你知道为什么会这样吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2014-07-23 12:17:08

当您的应用程序启动并自行初始化时,mongoose所做的是扫描注册模型的模式定义,并调用.ensureIndexes()方法获取所提供的参数。这是"by design"行为,也包含在下面的语句中:

当您的应用程序启动时,

会自动为您的模式中定义的每个索引调用ensureIndex。虽然适合开发,但建议在生产中禁用此行为,因为创建索引可能会导致significant performance impact。通过将模式的autoIndex选项设置为false来禁用该行为。

因此,您在这里的常规选项是:

  1. 不要“丢弃”集合,而是调用.remove(),这会使索引在执行drop命令以重新构建集合时调用.ensureIndexes()

文档中的警告通常是为大型集合创建索引可能需要一些时间并占用服务器资源。如果索引存在,这或多或少是对MongoDB的"no-op“,但是要注意索引定义的细微变化,这将导致创建”额外的“索引。

因此,通常最好为生产系统制定一个部署计划,您可以在其中确定需要执行的操作。

票数 2
EN

Stack Overflow用户

发布于 2015-05-29 02:03:19

这篇文章似乎认为在重新启动时索引不会重新构建:Are MongoDB indexes persistent across restarts?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24901570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档