Para uma aplicação básica de meteoros, chamo de "beliche" nisso. Se você criar um projeto totalmente novo e simplesmente definir a coleção, então o
$pull
operador funciona como esperado:Console:
meteor create tickets
cd tickets
meteor run
Em seguida, abra um shell e insira seus dados:
meteor mongo
> db.tickets.insert(data) // exactly your data in the question
Em seguida, basta produzir algum código básico e template:
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>
O aplicativo deve estar rodando bem, então no console do seu navegador faça o
.update()
(recuado para leitura):Tickers.update(
{ "_id": "ZcEvq9viGQ3uQ3QnT" },
{ "$pull": { "entries": { "id": "fc29774dadd7b37ee0dc5e3e" } }}
)
E o item é removido das entradas e a página é atualizada sem o item. Então tudo se foi, exatamente como esperado.
Mesmo adicionando os pacotes SimpleSchema e Collection2, não faz diferença aqui:
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
});
}
Reinicie os dados e execute o mesmo comando no console do navegador e tudo permanece igual.
Verifique este ou quaisquer erros de digitação em suas próprias operações ou outras diferenças para obter uma pista de por que isso não funciona para você.
Eu sugeriria isso fortemente, pois "começar de novo" mostra o comportamento esperado e, se você estiver vendo um comportamento diferente, provavelmente é um problema com outro plug-in que você instalou.
Mas geralmente, isso funciona.