基本的な流星アプリケーションでは、これを「バンク」と呼びます。まったく新しいプロジェクトを作成し、コレクションを定義するだけの場合は、 $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
});
}
データを再初期化し、ブラウザコンソールで同じコマンドを実行すると、すべてが同じままになります。
これや、自分の操作での入力ミスやその他の違いを確認して、これが機能しない理由を確認してください。
このように「最初からやり直す」と予想される動作が示されるため、これを強くお勧めします。異なる動作が見られる場合は、インストールした別のプラグインに問題がある可能性があります。
しかし、一般的に、これは機能します。