Создать и сохранить запись модели на MongoDB - PullRequest
0 голосов
/ 03 мая 2018

В настоящее время я нахожусь в разделе MongoDB и Mongoose в FreeCodeCamp.

В упражнении требуется, чтобы пользователь создал экземпляр документа с помощью созданного ранее конструктора Person. Передайте в конструктор объект с полями name, age и FavoritesFoods. Их типы должны соответствовать типам в схеме Person. Затем вызовите метод document.save () для возвращенного экземпляра документа. Передайте ему обратный вызов, используя соглашение Node.

Я создал личную схему и конструктор, но я не слишком уверен в том, что еще не хватает и как собрать все это вместе для реализации решения. Может кто-нибудь помочь уточнить?

var mongoose = require("mongoose");
mongoose.connect(process.env.MONGO_URI);

var Schema = mongoose.Schema;

var personSchema = new Schema({
  name:  {
    type: String,
    required: true
  },
  age: Number,
  favoriteFoods:   [String]
});

var Person = mongoose.model('Person', personSchema);

var joe = new Person({
  name: "Joe",
  age: 24,
  favoriteFoods: ['Apple', 'Banana']
});

joe.save(function(err, persons) {
  if(err){
    console.log("Failed");
  } else {
    console.log("Saved Successful");
    console.log(persons);
  }
});

var createAndSavePerson = function(done) {

  done(null /*, data*/);

};

Ответы [ 4 ]

0 голосов
/ 05 сентября 2018

@ SQMN имеет правильное решение. За исключением того, что приглашение FCC предполагает, что мы сначала создадим новый документ из модели Person и добавим в него данные; за до мы его сохраним.

var Person = mongoose.model('Person', personSchema);

var p = new Person;
p.name = "John";
p.age = 18;
p.favoriteFoods = ["hotpot", "suantangyu"];
var createAndSavePerson = function(done){
  p.save(function(err, data){
    if (err){
      return done(err);
    }
    return done(null, data);
  });
};
0 голосов
/ 06 августа 2018

Это связано с проблемой в freeCodeCamp:

Если вы пытаетесь выполнить эту задачу, прокрутите вниз файл шаблона myApp.js , в котором есть соответствующие инструкции и описание функции для каждого шага. вы найдете пустую функцию с createAndSavePerson (), пожалуйста, напишите свою логику в этом.

0 голосов
/ 31 августа 2018

Согласно пользователю форума FCC dnlnav , вы захотите переместить свой экземпляр и функцию сохранения в createAndSavePerson и переписать обратный вызов, переданный в save, следующим образом:

var createAndSavePerson = function(done) {
  var joe = new Person({
    name: "Joe",
    age: 24,
    favoriteFoods: ['Apple', 'Banana']
  });

  joe.save((err, data) => {
    if (err)
      return done(err);
    return done(null, data);
  });
};
0 голосов
/ 03 мая 2018

Я не изучал метод, который вы только что использовали. Но у mongoose есть собственный метод create (obj, callback), который выполняет большую часть работы за вас. Вы можете использовать это так:

var mongoose = require("mongoose");
mongoose.connect(process.env.MONGO_URI);

var Schema = mongoose.Schema;

var personSchema = new Schema({
  name:  {
    type: String,
    required: true
  },
  age: Number,
  favoriteFoods:   [String]
});

var Person = mongoose.model('Person', personSchema);

Person.create({
  name: "Joe",
  age: 24,
  favoriteFoods: ['Apple', 'Banana']
},function(err,result){
    //code to manage error or result if Successful
});
...