Para una aplicación básica de meteoritos, llamo "litera" a esto. Si crea un proyecto completamente nuevo y simplemente define la colección, entonces $pull
el operador funciona como se esperaba:
Consola:
meteor create tickets
cd tickets
meteor run
Luego abra un shell e inserte sus datos:
meteor mongo
> db.tickets.insert(data) // exactly your data in the question
Luego solo produzca un código básico y una plantilla:
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>
La aplicación debería funcionar bien, así que en la consola de su navegador haga .update()
(sangrado para lectura):
Tickers.update(
{ "_id": "ZcEvq9viGQ3uQ3QnT" },
{ "$pull": { "entries": { "id": "fc29774dadd7b37ee0dc5e3e" } }}
)
Y el elemento se elimina de las entradas y la página se actualiza sin el elemento. Así que todo desapareció, tal como se esperaba.
Incluso agregar los paquetes SimpleSchema y Collection2 no hace ninguna diferencia aquí:
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
});
}
Vuelva a inicializar los datos y ejecute el mismo comando en la consola del navegador y todo permanecerá igual.
Verifique este o cualquier error tipográfico en sus propias operaciones u otras diferencias para obtener una pista de por qué esto no funciona para usted.
Sugeriría esto encarecidamente, ya que "comenzar de nuevo" como este muestra el comportamiento esperado, y si observa un comportamiento diferente, es probable que sea un problema con otro complemento que haya instalado.
Pero, en general, esto funciona.