如何将我的meteor应用程序连接到外部MongoDB?

时间:2017-09-14 17:41:00

标签: javascript node.js mongodb meteor

我在heroku中托管了Node.JS服务器,我想在我的Meteor应用程序中使用相同的Mongo数据库。

这是我的Node.js服务器中的Mongo数据库:

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;

var messageSchema   = new Schema({
    requestNumber: String,
    requestedDateTime: String,
    reasons: String,
    state: String,
    hospital: String,
    phone: String,
    status: {type: String, default: 'Pending'},
    latestUpdate: Date,
    createdAt: {type: Date, default: Date.now}
});

module.exports = mongoose.model('Requests', messageSchema);

这是Meteor中的我的收藏:

Requests = new Mongo.Collection("requests");

Requests.attachSchema(new SimpleSchema({
    requestNumber: {type: String},
    requestedDateTime: {type: String},
    reasons: {type: String},
    state: {type: String},
    hospital: {type: String},
    phone: {type: String},
    status: {type: String, defaultValue: 'Pending'},
    latestUpdate: {type: Date},
    createdAt: {type: Date, defaultValue: Date.now}
}));

Requests.allow({
  insert: function(userId, doc){
    return true;
  },
  update: function(userId, doc, fields, modifier){
    return true;
  },
  remove: function(userId, doc){
    return true;
  }
});

以下是我如何连接到Node.JS app中的Meteor数据库:

Meteor.startup(() => {
    process.env.MONGO_URL = 'mongodb://...';
});

当我在db.requests.find().pretty()中尝试meteor mongo/mongo shell时,控制台上没有任何内容。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

我认为这是连接外部数据库的错误方法。在您的应用启动后,您已经指定了MONGO_URL ,此时它已经启动了内部mongo服务器。

您应该在从控制台运行meteor应用程序时指定MONGO_URL

MONGO_URL="mongodb://..." meteor

您可以使用微小的sh脚本来执行此操作:

#!/bin/sh
MONGO_URL="mongodb://..." meteor -s <path_to_settings_file> ... <other_parameters>