流星远程收集 - 钩子不起作用

时间:2017-08-08 08:44:07

标签: javascript meteor hook

我必须连接到外部数据库并访问其集合。当我使用它时它工作正常,但问题是当我需要收集钩子时,例如Collection.after.insert(function(userId,doc))。钩子没有被射击。我有以下代码:

// TestCollection.js

let database = new MongoInternals.RemoteCollectionDriver("mongodb://127.0.0.1:3001/meteor",
{
    oplogUrl: 'mongodb://127.0.0.1:3001/local'
});
let TestCollection = new Mongo.Collection("testCollection", { _driver: database });
module.exports.TestCollection = TestCollection;
console.log(TestCollection.findOne({name: 'testItem'})); // writes out the item correctly

// FileUsingCollection.js
import { TestCollection } from '../collections/TestCollection.js';
console.log(TestCollection.findOne({name: 'testItem'})); // writes out the item correctly second time

TestCollection.after.update(function (userId, doc) {
  console.log('after update');
}); // this is NOT being fired when I change the content of remote collection (in external app, which database I am connected)

如何使这项工作?

编辑:

我已经阅读了很多时间,我认为它可能与以下内容有关: - oplog - replicaSet

但我是Meteor的新手,无法找出这些东西是什么。我已经设置了MONGO_OPLOG_URL,我在这里读到了oplog参数到数据库驱动程序:https://medium.com/@lionkeng/2-ways-to-share-data-between-2-different-meteor-apps-7b27f18b5de9 但没有改变。而且我不知道如何使用这个replicaSet,如何将它添加到url中。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

你也可以尝试下面的代码,

    var observer = YourCollections.find({}).observeChanges({
            added: function (id, fields) {

             }
        });

您还可以拥有'addedBefore(id, fields, before)''changed(id, fields)''movedBefore(id, before)''removed(id)'

了解更多功能goto link