ich die folgenden Schemata habe:Referenzdokumente mit ObjectId wenn in Mungo Speicher
// 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);
Ich habe gespeichert schon einen Haufen Zutaten in einer Sammlung ingredients
und verfügen über eine Benutzeroberfläche in dem Benutzer eine Reihe von Zutaten für ihren Burger wählen. Ich versuche dann in einer anderen Sammlung orders
burgers
wie diese innerhalb derselben Datenbank einen Auftrag für einen Burger zu sparen:
// 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');
});
Der Anruf ein, um die folgenden Fehler zu speichern erzeugt:
{ message: Cast to ObjectId failed for value xxx at path 'ingredients',
name: 'CastError',
type: ObjectId,
value: xxx,
path: 'ingredients' }
Ich benutze Mungo Version 3.6.11. Bitte hilf mir, das zu hacken.
PS: req.body.ingredients ist ein Array aus Checkboxen.
Ich lief Option 1 und Express wirft einen Fehler: 'Fehler: Argument übergeben muss ein einzelner String von 12 Byte oder ein Zeichenfolge von 24 Hex-Zeichen ". Ich versuche immer noch meinen Kopf um diese 'ObjectId'-Sache zu wickeln. – gabeno
Nun, überprüfen Sie Option 2 jetzt. Sie dürfen keine gültigen 'ObjectId's übergeben. – gustavohenke
Du hast es! Option zwei Nägel es. Das Problem war, dass ich 'ingredient.name' in' req.body.ingredients' anstelle von 'ingred._id' aufgefüllt hatte. Danke für die Köpfe hoch. – gabeno