Meteor 应用程序 — 重置已部署应用程序的数据库
Posted
技术标签:
【中文标题】Meteor 应用程序 — 重置已部署应用程序的数据库【英文标题】:Meteor app — resetting a deployed app's DB 【发布时间】:2013-03-13 01:30:54 【问题描述】:有没有一种简单的方法可以从流星部署的应用程序中重置数据?
因此,例如,如果我部署了一个名为 test.meteor.com
的应用程序,我如何轻松重置该应用程序收集的数据?
我在本地运行 meteor reset
,但我不确定在生产中要做什么。
【问题讨论】:
【参考方案1】:如果你有你的应用,你可以在你的项目目录中这样做
meteor deploy test.meteor.com --delete
meteor deploy test.meteor.com
第一个删除应用程序,使其全部空白。第二个部署它的新实例。
【讨论】:
嘿@akshat,你认为***.com/questions/10214385/how-does-meteor-work应该重新打开吗? 这看起来有点像 hack。有没有更清洁的方法? 这段代码是否会导致 URL 暂时被抓取? 这与在生产中重置应用数据无关,我不明白为什么这个答案会得到如此多的支持【参考方案2】:一种方法是自己登录mongo实例并删除相关数据 所以像每个集合一样:
$ meteor mongo APP.meteor.com
> db.users.drop()
> db.xxx.drop()
您可以直接删除整个数据库,但这会混淆他们的环境,您必须--delete
应用程序并重新部署。
> db.dropDatabase()
【讨论】:
这应该是公认的答案,你让我免于重建 + 重新上传,谢谢! 在生产环境中对已登录的用户执行此操作是一件坏事! @DotNetWise:你不应该有一个生产 APP.meteor.com。充其量你在那里有一个测试版,并且它是一个测试版,人们知道会期待这样的打嗝(如果他们的整个帐户和他们曾经做过的所有事情都被删除算作打嗝。想象一下如果 Facebook 这样做了 - 我想知道有多少人会费心留下来重新创造一切。) 很棒的建议 - 我真正需要做的只是删除几个数据库。【参考方案3】:我知道这有点旧,但我只是更改了我的收藏名称。所以在你的/lib/collections.js
文件中,
someCollection = new Mongo.Collection("originalcollection");
变成
someCollection = new Mongo.Collection("newcollectionname");
这当然是假设您的应用程序为数据库生成数据。
【讨论】:
这里你没有删除旧的集合,你只是创建了一个新的空集合。如果您在服务器上运行的应用程序中执行此操作(而不仅仅是在本地),您的服务器上仍然会有数据保存在名为originalcollection
的集合中。
是的@krose,我承认这一点,但关键是如果您需要测试某些东西,它既简单又快速。正如其他人指出的那样,您不会将myapp.meteor.com
用于生产。如果你这样做了,你肯定不想只删除一个生产数据库。我执行此策略是为了在不影响数据的情况下安全地使用我的模型尝试新事物。恕我直言,这种反应并没有那么糟糕,值得一票否决,因为它是处理生产数据的一种更安全的方式。正如@dcsan 的评论所解释的那样,您可以随时删除特定的集合
似乎是一个快速的技巧,如果你知道你在做什么,你可以使用 :) 赞成以平衡反对票 :)【参考方案4】:
您只需访问您的流星数据库
production-db-d2.meteor.io:27017/XYZ_meteor_com
其中 XYZ = 您的子域
用于身份验证使用流星身份验证(用户名和密码)
您可以通过 rockmongo、robomogo、mongoui 等工具访问它。
从命令行访问
首先通过输入流星的用户名,密码进行身份验证
$流星登录
然后
$meteor mongo XYZ.meteor.com
【讨论】:
以上是关于Meteor 应用程序 — 重置已部署应用程序的数据库的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB / Meteor / 将 MONGO_URL 导出到已部署的应用程序
MongoDB / Meteor / 将 MONGO_URL 导出到已部署的应用程序
抛砖引玉:使用docker对Meteor应用进行产品级部署(入门篇)