Данные Seed MongoDB - только один раз? - PullRequest
0 голосов
/ 24 января 2019

Я немного новичок в концепции посева.

Моя цель состоит в том, чтобы в базе данных был набор данных, который можно было бы отобразить на внешнем интерфейсе.Я не хочу «заполнять» базу данных каждый раз, когда запускаю сервер.Я просто хочу добавить один набор данных.Я понял, как заполнять базу данных, но только если я запускаю ее каждый раз, когда запускаю сервер.Я правильно об этом говорю?Как мне только посеять это один раз?Спасибо!Я запускаю функцию seedfoods() в app.js при запуске сервера.

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 Ответ

0 голосов
/ 24 января 2019

Пара опций:

Инициализировать начальный сценарий на старте сервера, который запускает начальное число один раз и сохраняет какую-то запись об этом (например, запись в базе данных или файл или что-то подобное),Это, вероятно, самый чистый, но также и самый трудоемкий процесс.

Я предлагаю вам сделать следующее: вы можете пропустить обнаружение существующих документов, просто используя опцию upsert в запросе на обновление, который будеттолько создать новый документ, если он еще не существует.Так что просто запускайте начальное число при каждом запуске с помощью операции обновления с параметром {upsert: true}.

https://mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...