來自關係數據庫背景的Meteor和MongoDB的新手。這個問題實際上反映了我在MongoDB中處理關係的困惑。MongoDB - 插入兩個集合,一個集合引用另一個作爲子文檔
示例:我想將一個配方插入一組配方中,在這種情況下,這是一個逗號分隔的多個配料串。然而,我想要將這些成分同時加入到一系列成分中。我希望食譜指的是成分集合中的成分,例如,如果我第一次得到某個成分的拼寫錯誤,我可以稍後在成分集合中更新它,並且使用該成分的所有配方也更新了。
看來,這樣做的方法是將成分集合作爲子文檔包含在食譜集合中。
但是,我不知道我該如何實際執行該操作。使用流星在JS代碼示例如下:
Recipes = new Mongo.Collection("recipes");
Ingredients = new Mongo.Collection("ingredients");
Template.body.events({
"submit .new-recipe": function(event) {
// Prevent default browser form submit
event.preventDefault();
// Get value from form element
var text = event.target.text.value;
var splitText = text.split(",");
var nInputs = splitText.length;
var recipe = [];
for (var i = 0; i < nInputs; i++) {
// Insert an ingredient into the ingredients collection
Ingredients.insert({
itemName: splitText[i].trim(),
createdAt: new Date()
});
recipe.push(splitText[i]);
}
// Insert the list of ingredients as a recipe into the recipes collection
Recipes.insert({
recipe: recipe,
createdAt: new Date()
});
// Clear form
event.target.text.value = "";
}
});
顯然,上述不正確地做這項工作。它切斷了配料和配方之間的關係。但我如何維持這種關係呢?插入配料時,我是否會將配料中的各種配料放入食譜集合中?在插入配料時,我是否將整個配料文檔作爲配方文檔的一部分插入配方集合中?
非常感謝!除了'check(ingredientNames,[String]);'行之外,一切都可以工作。錯誤消息說「檢查」是一個未知的功能。我錯過了什麼?它來自一些JS庫嗎? – MichM
那很奇怪。 [檢查](HTTP://docs.meteor。com /#/ full/check)是一個默認包含的軟件包。你是否正在運行一個真正舊版本的流星? –
感謝您的線索!通過「流星加檢查」解決 – MichM