2017-09-14 104 views
1

我有Node.JS服務器託管在heroku中,我想在我的Meteor應用程序中使用相同的Mongo數據庫。如何將我的流星應用程序連接到外部MongoDB?

這裏是我的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數據庫中Meteor應用:

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

當我在​​中嘗試db.requests.find().pretty()時,沒有任何內容顯示在控制檯上。

我在這裏做錯了什麼?

回答

2

我認爲這是連接到外部數據庫的錯誤方法。您在之後指定MONGO_URL您的應用程序已啓動並且此時它已經啓動了內部mongo服務器。

,同時從控制檯上運行您的流星應用程序,你應該指定MONGO_URL

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

您可以使用一個微小sh腳本來做到這一點:

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

感謝。我做了它,它似乎工作,因爲我不能使用「meteor mongo」命令,因爲它只連接到本地mongo。但我怎樣才能確保它連接?我試過「console.log(Requests.find({}))」,但沒有任何返回。抱歉花時間。 –

+0

你可以使用'meteor shell'並運行命令,比如'Requests.find()。fetch()' – Styx

+0

我實際上可以在「meteor shell」中看到它,但是在代碼裏面,Requests.find({}) , 你知道爲什麼嗎? –

相關問題