Создание массива объектов по умолчанию для модели mon goose - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть модель mon goose:

const mongoose = require('mongoose');

const id = mongoose.Schema.Types.ObjectId;

const templateSchema = mongoose.Schema({
    _id: id,
    heading: {
        type: String,
        required: true
    },
    content: {
        type: String,
        required: true
    }
});


module.exports = mongoose.model("template", templateSchema);

В моем приложении у меня есть контроль API покоя на основе ролей. Администратор может создавать эти шаблоны, которые в дальнейшем будут использоваться клиентом / пользователем в веб-интерфейсе. Но для инициализации мне нужно создать 3-4 шаблона по умолчанию в базе данных через admin.

Эти шаблоны по умолчанию будут отображаться / извлекаться из самой базы данных, как только приложение запускается. Далее администратор создаст новые дополнительные шаблоны, используя соответствующую конечную точку, которая будет отправлена ​​на существующие данные шаблонов по умолчанию.

Я читал об использовании static methods в модели mon goose, но не уверен, что это правильный подход.

Хотя я пробовал следующий JS подход, но это не сработало.

const mongoose = require("mongoose");

const id = mongoose.Schema.Types.ObjectId;

const templateSchema = mongoose.Schema({
  _id: id,
  heading: {
    type: String,
    // required: true,
  },
  content: {
    type: String,
    // required: true,
  },
});

module.exports = mongoose.model("template", templateSchema);

// let Template = mongoose.model("template", templateSchema);

let defaultTemplates = [
  {
    heading: "CONNECTION REQUEST",
    content:
      "<div><p>Dear Mark,</p><p>It was great meeting you at the ESRI conference in San Diego last month.The mapping and charting work you do for airports sound fascinating.I'd definitely like to stay up-to-date with your career.</p><p>Thank you,</p><p>Lindsey</p></div>",
  },
  {
    heading: "MESSAGE AFTER CONNECTION ACCEPTED",
    content:
      "<div><p>Dear Mark,</p><p>It was great meeting you at the ESRI conference in San Diego last month.The mapping and charting work you do for airports sound fascinating.I'd definitely like to stay up-to-date with your career.</p><p>Thank you,</p><p>Lindsey</p></div>",
  },
  {
    heading: "INTRESTED MESSAGE",
    content:
      "<div><p>Dear Mark,</p><p>It was great meeting you at the ESRI conference in San Diego last month.The mapping and charting work you do for airports sound fascinating.I'd definitely like to stay up-to-date with your career.</p><p>Thank you,</p><p>Lindsey</p></div>",
  },
];

let new_details = [];
defaultTemplates.forEach((temp) => {
  temp._id = new mongoose.Types.ObjectId();
  new_details.push(temp);
});


templateSchema.statics.saveTemplate = function(new_details, callback){
    var template = new this(new_details);
    template.save(callback);
};

Он не сохраняет шаблоны в базу данных и снова и снова выдает следующую ошибку:

Template.saveTemplate(function(result) {
         ^

TypeError: Template.saveTemplate is not a function

Пожалуйста, помогите мне решить эту проблему.

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