【发布时间】:2019-06-18 03:36:58
【问题描述】:
我对播种的概念有点陌生。
我的目标是在数据库中有一组可以在前端显示的数据。我不想每次启动服务器时都“播种”数据库。我只想添加一组数据。我已经想出了如何为数据库播种,但前提是每次启动服务器时都要播种。我这样做对吗?我如何只播种一次?谢谢!服务器启动时,我在 app.js 中运行 seedfoods() 函数。
var mongoose = require("mongoose");
var Food = require("./models/food");
function seedfoods() {
//add the foods to the database
data.forEach(function(seedfoods){
Food.create(seedfoods, function(err, Food){
if(err){
console.log(err)
} else {
console.log("added a food");
}
});
});
}
var data = [
{
name: "Avocados",
easyFood: true,
phase1: true,
about: "Yum Avocados",
},
{
name: "Milk",
easyFood: true,
phase1: true,
about: "Yum Milk",
},
]
module.exports = seedfoods;
【问题讨论】:
-
选项 1: 使用单独的应用程序将数据放入数据库。 选项 2: 检查条件我们是否已经在数据库中有数据
-
我试过 name: { type: String, required: false, unique: true },它可以工作,但显然每次都会抛出重复的错误。这似乎很糟糕。
-
您可以查看收藏的“计数”。如果为0,则为种子,否则完全跳过。
-
喜欢这个? Food.count([], function (err, count) { console.log(count); });
-
是的,然后将计数保存在 var 中。之后,如果那个 var === 0,种子。
标签: node.js database mongodb express mongoose