За основно приложение за метеоризъм, аз наричам "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
});
}
Повторно инициализирайте данните и изпълнете същата команда в конзолата на браузъра и всичко ще остане същото.
Проверете тази или всякакви грешки при въвеждане в собствените си операции или други разлики, за да разберете защо това не работи за вас.
Бих препоръчал това силно, тъй като „започването на чисто“ като това показва очакваното поведение и ако виждате различно поведение, вероятно е проблем с друг плъгин, който сте инсталирали.
Но като цяло това работи.