ドキュメントを保存するときに、次のように事前保存メソッドを定義しました。
Org.pre("save",function(next, done) {
var Currency = require('./currency');
var cur = this.get('currency');
console.log("checking currency: " + cur);
Currency
.findOne({name: cur})
.select('-_id name')
.exec(function (err, currency) {
if (err) done(err);
if (!currency) done(new Error("The currency you selected ('" + currency + "') is not supported. Please select one from /currencies"));
next();
});
});
このメソッドは、通貨コレクションをチェックして、通貨フィールド入力がサポートされているかどうかを確認します。APIをテストすると、適切なエラーが返されます(500エラーとメッセージ:選択した通貨...)が、ドキュメントは引き続きMongoDBに保存されます。エラーが送信された場合、ドキュメントは保存されるべきではないと思います。ここで何かが足りませんか?