Pembaruan
Sekarang dimungkinkan untuk terhubung ke basis data jarak jauh/banyak:
var database = new MongoInternals.RemoteCollectionDriver("<mongo url>");
MyCollection = new Mongo.Collection("collection_name", { _driver: database });
Dimana <mongo_url>
adalah url mongodb seperti mongodb://127.0.0.1:27017/meteor
(dengan nama database)
Ada satu kelemahan dengan ini saat ini:Tidak Ada Oplog
Jawaban Lama
Pada saat ini tidak mungkin. Setiap aplikasi meteor terikat pada satu database.
Ada beberapa cara untuk menyiasatinya, tetapi mungkin lebih rumit daripada nilainya:
Satu opsi - Gunakan Aplikasi Meteor terpisah
Di aplikasi meteor Anda yang lain (contoh berjalan di port 6000 pada mesin yang sama). Anda masih dapat memiliki reaktivitas tetapi Anda perlu menyisipkan, menghapus, dan memperbarui proxy melalui pemanggilan metode
Server:
Cats = Meteor.Collection('cats')
Meteor.publish("cats", function() {
return Cats.find();
});
Meteor.methods('updateCat, function(id, changes) {
Cats.update({_id: id}, {$set:changes});
});
Aplikasi Meteor Anda saat ini:
var connection = DDP.connect("http://localhost:6000");
connection.subscribe("cats");
Cats = Meteor.Collection('cats', {connection: connection});
//To update a collection
Cats.call("updateCat", <cat_id>, <changes);
Opsi lain - koneksi mongodb khusus
Ini menggunakan driver asli node js mongodb.
Ini menghubungkan ke database seperti yang Anda lakukan di aplikasi node js lainnya.
Tidak ada tidak reaktivitas tersedia dan Anda tidak dapat menggunakan new Meteor.Collection
ketik koleksi.
var mongodb = Npm.require("mongodb"); //or var mongodb = Meteor.require("mongodb") //if you use npm package on atmosphere
var db = mongodb.Db;
var mongoclient = mongodb.MongoClient;
var Server = mongodb.Server;
var db_connection = new Db('cats', new Server("127.0.0.1", 27017, {auto_reconnect: false, poolSize: 4}), {w:0, native_parser: false});
db.open(function(err, db) {
//Connected to db 'cats'
db.authenticate('<db username>', '<db password>', function(err, result) {
//Can do queries here
db.close();
});
});