注文フォームと注文用に定義されたスキーマを作成しています (住所、顧客情報、選択したアイテムとその数量などの特定の必須フィールド)。
を。ユーザーがサイトにアクセスします。
b. セッションの一意の ID とタイムスタンプが生成されます。
var userSession = {
_id: createId(),
timestamp: new Date(),
};
var sessionId = userSession._id;
c. はuserSession
ローカル ストレージに配置されます。
storeInLocalStorage('blahblah', sessionObject);
d. これまでのところ、sessionId を唯一のフィールドとして Order オブジェクトが作成されています。
var newOrder = {
sessionId: sessionId;
};
e. 明らかに、この時点で Order オブジェクトはスキーマに従って検証されないため、Mongo に格納できません。しかし、ユーザーの最初の訪問時に生成されたセッション ID を使用して、不完全な注文または進行中の注文を後で取得できるように、Mongo に保存したいと考えています。
検証に失敗するため、これは機能しません。
Orders.insert(newOrder);
f. ユーザーがサイトに再アクセスしたときに、Mongo から不完全な注文を取得して再開できるようにしたい:
var sessionId = getLocalStorage('blahblah')._id;
var incompleteOrder = Orders.findOne({'sessionId', sessionId});
したがって、これらのポイントを達成しながらこれを行う方法がわかりません。
ユーザーがフォームにアイテムを入力するとき、およびユーザーが完全な完全な注文を送信しようとしているときに、コレクションの完全な
simpleschema
検証が必要です。Orders
simpleschema
コレクションの検証を無効Orders
にし、DB への保存を許可して、後で再開するために部分的な注文を保存できるようにしたいと考えています。
ここでこれを使用してフィールドを条件付きで必須にすることができますが、それは、このシナリオのためだけに 50 以上のフィールドが条件付きで必須になることを意味し、非常に面倒に思えます。