4

次のユースケースがあります。

  • フロントエンドとは別のサービスであるバックエンドの MongoDB に users テーブルがあります。DDP.connect() を使用して、このバックエンド サービスに接続します。
  • 各ユーザーには一連の「サブジェクト」があります
  • users テーブルの各サブジェクトは、名前ではなく ID で参照されます。主題を ID で保持する「subjects」と呼ばれる別のテーブルがあります。

  • ユーザーをクライアントに公開したいのです、公開されたユーザーに最初にサブジェクトを入力したいと考えています。

このブログ投稿に触発されて、次のことを試しました。

// in the backend service on port 3030
Meteor.publish('users', function(userId) {
  var _this = this;
  Meteor.users.find({
    _id: userId
  }).forEach(function(user) {
    user.profile = populate(user.profile);
    console.log(user);
    _this.changed('users', userId, {
        _id: userId,
        profile: user.profile
    });
  });
  _this.ready();
});

// in the client
var UserService = DDP.connect('http://localhost:3030');

var UserServiceProfile = UserService.subscribe('users', Meteor.userId());
console.log(UserServiceProfile);

これにより、バックエンドで次のエラーが発生します:
Exception from sub users id akuWx5TqsrArFnQBZ Error: Could not find element with id XhQu77F5ChjcMTSPr to change.

ということで、に変更_this.changedしてみました_this.added。エラーは発生しませんが、クライアントの minimongo に変更が反映されていませpopulateconsole.log(user)

4

1 に答える 1