sql >> データベース >  >> NoSQL >> MongoDB

Meteorを介して配列からエントリをプルします

    基本的な流星アプリケーションでは、これを「バンク」と呼びます。まったく新しいプロジェクトを作成し、コレクションを定義するだけの場合は、 $pull 演算子は期待どおりに機能します:

    コンソール:

    meteor create tickets
    cd tickets
    meteor run
    

    次に、シェルを開いてデータを挿入します:

    meteor mongo
    
    > db.tickets.insert(data)   // exactly your data in the question
    

    次に、基本的なコードとテンプレートを作成します。

    tickers.js

    Tickers = new Meteor.Collection("tickers");
    
    if (Meteor.isClient) {
    
      Template.body.helpers({
        "tickers": function() {
          return Tickers.find({});
        }
      });
    
    }
    
    if (Meteor.isServer) {
      Meteor.startup(function () {
        // code to run on server at startup
      });
    }
    

    tickers.html

    <head>
      <title>tickers</title>
    </head>
    
    <body>
      <h1>Welcome to Meteor!</h1>
    
      <ul>
        {{#each tickers}}
          {{> ticker}}
        {{/each}}
      </ul>
    
    </body>
    
    <template name="ticker">
      <li>
        {{_id}}
        <ul>
          {{#each entries}}
            {{> entry }}
          {{/each}}
        </ul>
      </li>
    </template>
    
    <template name="entry">
      <li>{{ id }} - {{text}}</li>
    </template>
    

    アプリケーションは正常に実行されているはずなので、ブラウザコンソールで.update()を実行します (読むためにインデントされています):

    Tickers.update(
        { "_id": "ZcEvq9viGQ3uQ3QnT" },
        { "$pull": { "entries": { "id": "fc29774dadd7b37ee0dc5e3e" } }}
    )
    

    そして、アイテムはエントリから削除され、ページはアイテムなしで更新されます。予想どおり、すべてがなくなりました。

    SimpleSchemaパッケージとCollection2パッケージを追加しても、ここでは違いはありません:

     meteor add aldeed:simple-schema
     meteor add aldeed:collection2
    

    tickers.js

    Tickers = new Meteor.Collection("tickers");
    
    TickerEntries = new SimpleSchema({
      "id": {
        type: String,
        optional: true,
        autoValue: function() {
          if (!this.isSet) {
            return new Mongo.Collection.ObjectID()._str
          }
        }
      },
      "text": {
        type: String
      }
    });
    
    Tickers.attachSchema(
      new SimpleSchema({
        entries: { type: [TickerEntries] }
      })
    );
    
    
    if (Meteor.isClient) {
    
      Template.body.helpers({
        "tickers": function() {
          return Tickers.find({});
        }
      });
    
    }
    
    if (Meteor.isServer) {
      Meteor.startup(function () {
        // code to run on server at startup
      });
    }
    

    データを再初期化し、ブラウザコンソールで同じコマンドを実行すると、すべてが同じままになります。

    これや、自分の操作での入力ミスやその他の違いを確認して、これが機能しない理由を確認してください。

    このように「最初からやり直す」と予想される動作が示されるため、これを強くお勧めします。異なる動作が見られる場合は、インストールした別のプラグインに問題がある可能性があります。

    しかし、一般的に、これは機能します。



    1. ハウツー:HBase Thriftインターフェースの使用、パート1

    2. データベースのクレデンシャルを正しく非表示にする

    3. MongodbとMAMP

    4. mongoDB Javaドライバーのロギングを無効にする方法は?