For en grundlæggende meteorapplikation kalder jeg "køje" på dette. Hvis du opretter et helt nyt projekt og blot definerer samlingen, så $pull
operatør fungerer som forventet:
Konsol:
meteor create tickets
cd tickets
meteor run
Åbn derefter en shell og indsæt dine data:
meteor mongo
> db.tickets.insert(data) // exactly your data in the question
Så skal du bare lave en grundlæggende kode og skabelon:
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>
Applikationen burde køre fint, så i din browserkonsol skal du udføre .update()
(indrykket til læsning):
Tickers.update(
{ "_id": "ZcEvq9viGQ3uQ3QnT" },
{ "$pull": { "entries": { "id": "fc29774dadd7b37ee0dc5e3e" } }}
)
Og elementet fjernes fra poster, og siden opdateres uden elementet. Så alt er væk, lige som forventet.
Selv tilføjelse af SimpleSchema- og Collection2-pakkerne gør ingen forskel her:
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
});
}
Geninitialiser dataene og kør den samme kommando i browserkonsollen, og alt forbliver det samme.
Tjek dette eller eventuelle tastefejl i dine egne operationer eller andre forskelle for at få et fingerpeg om, hvorfor dette ikke virker for dig.
Jeg vil kraftigt foreslå dette, da "at starte på en frisk" som dette viser den forventede adfærd, og hvis du ser anderledes adfærd, er det sandsynligvis et problem med et andet plugin, du har installeret.
Men generelt virker dette.