MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Изтеглете запис от масив чрез Meteor

За основно приложение за метеоризъм, аз наричам "bunk" за това. Ако създадете чисто нов проект и просто дефинирате колекцията, тогава $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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 3 начина да изберете реда с минимална стойност в SQL

  2. Осредняване на поле за поддокумент между документи в Mongo

  3. Опцията useFindAndModify не се поддържа

  4. Ограничаване на резултатите в MongoDB, но все още получаване на пълния брой?

  5. MongoDB $range