【问题标题】:Create and Save a Record of a Model on MongoDB在 MongoDB 上创建并保存模型的记录
【发布时间】:2018-10-13 03:57:00
【问题描述】:

我目前在 FreeCodeCamp 的 MongoDB 和 Mongoose 部分。

exercise 要求用户使用您之前构建的 Person 构造函数创建文档实例。将具有字段名称、年龄和喜爱食物的对象传递给构造函数。它们的类型必须符合 Person Schema 中的类型。然后在返回的文档实例上调用方法 document.save()。使用 Node 约定向它传递一个回调。

我已经创建了 person 架构和构造函数,但我不太确定仍然缺少什么以及如何将它们拼凑在一起以实现解决方案。有人可以帮忙澄清一下吗?

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*/);

};

【问题讨论】:

    标签: javascript mongodb express mongoose mongoose-schema


    【解决方案1】:

    @SQMN 有正确的解决方案。除了the FCC prompt 建议我们首先从 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);
      });
    };
    

    【讨论】:

      【解决方案2】:

      根据 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);
        });
      };
      

      【讨论】:

        【解决方案3】:

        这与 freeCodeCamp 中的一个挑战有关:

        如果您尝试完成此挑战,请向下滚动模板myApp.js 文件,其中包含每个步骤的正确说明和函数声明。你会发现一个带有 createAndSavePerson() 的空函数,请在其中写下你的逻辑。

        【讨论】:

          【解决方案4】:

          你刚才用的方法我没研究过。但是猫鼬有它自己的方法 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
          });
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-12-08
            • 2021-11-23
            • 1970-01-01
            • 2018-02-05
            • 1970-01-01
            相关资源
            最近更新 更多