に保存するとき、私は、次のスキーマを持っている:参考書類マングース
// ingredient
var ingredSchema = new Schema({
name: String,
cost: Number
});
// order
var orderSchema = new Schema({
cusName: String,
ingredients: [{type: Schema.Types.ObjectId, ref: 'Ingredient'}]
});
// create model
var Ingredient = mongoose.model('Ingredient', ingredSchema);
var Order = mongoose.model('Order', orderSchema);
は、私はすでにコレクションingredients
にバンチ成分を保存し、ユーザーが自分のハンバーガー用食材のセットを選択UIを持っています。私は、このように同じデータベースburgers
内の別のコレクションorders
にハンバーガーの注文を保存しよう:
// get order info from the form
var newOrder = new Order({ cusName: req.body.name,
ingredients: req.body.ingredients });
newOrder.save(function(err) {
if (err)
return console.log('Could not save your new order', err);
res.redirect('/order');
});
順序を保存するための呼び出しは次のエラー生成します。
{ message: Cast to ObjectId failed for value xxx at path 'ingredients',
name: 'CastError',
type: ObjectId,
value: xxx,
path: 'ingredients' }
を私はマングースを使用しますバージョン3.6.11。私はこれをハックするのを助けてください。
PS:req.body.ingredientsはチェックボックスから構築された配列です。
私はオプション1を実行したと表現するには、エラーがスローされます
は、結果を投稿してください24桁の16進数の文字列。私はまだこの 'ObjectId'のことを頭の中に入れようとしています。 – gabeno
さて、オプション2をチェックしてください。有効な 'ObjectId'を渡すことはできません。 – gustavohenke
あなたはそれを持っています!オプション2はそれを釘付けます。問題は、 'ingred.name 'が' ingred._id'の代わりに 'req.body.ingredients'に設定されていたことでした。ヘッドアップをありがとう。 – gabeno