FreeCodeCamp 的“MongoDB 和 Mongoose - 创建模型”挑战的问题
Posted
技术标签:
【中文标题】FreeCodeCamp 的“MongoDB 和 Mongoose - 创建模型”挑战的问题【英文标题】:Problem with FreeCodeCamp's "MongoDB and Mongoose - Create a Model" Challenge 【发布时间】:2021-02-22 12:28:36 【问题描述】:我正在参加 FreeCodeCamp 的“MongoDB 和 Mongoose - 创建模型”挑战。我已经通过代码提交了。但是,我收到此错误:
Creating an instance from a mongoose schema should succeed
这是我的代码:
let mongoose = require('mongoose')
mongoose.connect(uri, useNewUrlParser: true, useUnifiedTopology: true );
let personSchema = new mongoose.Schema(
name: type: String, required: true,
age: Number,
favoriteFoods: [String]
);
let Person = mongoose.model('Person', personSchema);
我有错吗?
【问题讨论】:
【参考方案1】:出现问题的原因似乎是下面的代码试图重新声明“Person”变量(在使其成为 const 之后)。如果您查看 Replit 上的样板代码,那里已经存在一些代码,并且该代码的一部分具有以下内容:
let Person;
简单地评论这条线对我有用。
【讨论】:
【参考方案2】:在尝试了互联网上不同帖子/博客上建议的许多不同内容后,以下代码对我有用。
require('dotenv').config();
//To-Do # 1: Install & Set up mongoose */
const mongoose = require('mongoose');
mongoose.connect(process.env.MONGO_URI);
//To-Do # 2: Create a Model
const personSchema = new mongoose.Schema(
name: type: String, required: true ,
age: Number,
favoriteFoods: [String]
);
const Person = mongoose.model('Person', personSchema);
我仍然找不到问题所在,因为我试图复制和粘贴免费代码营建议的问题的解决方案中给出的代码,即使这样也没有用。我用的是replit,也许免费代码营测试与replit的肝脏服务器交互时一定有问题,但是应该有专家详细回答问题,以节省其他人的时间。
【讨论】:
【参考方案3】:由于您是将此代码提交到 FCC 服务器,因此您不需要自己连接到 db。他们必须已经与 db 建立了连接。您只需要提供 Person 模型的正确实现。 IMO 由于您在提交中包含该行,因此代码在该行中断并且后续行没有被执行。因此,您收到此错误。从 mongoose 模式创建实例应该会成功
试试这个 -
let mongoose = require('mongoose');
let Schema = mongoose.Schema;
let personSchema = new Schema(
name: type: String, required: true,
age: Number,
favoriteFoods: [String]
);
let Person = mongoose.model('Person', personSchema);
【讨论】:
错误是什么?你有什么实质性的改变吗?会有什么帮助? 我已经删除了连接语句。 好的,但你认为这是错误的原因吗? 由于您是将此代码提交到FCC服务器,因此您不需要自己连接到db。他们必须已经与 db 建立了连接。您只需要提供Person
模型的正确实现。 IMO 由于您在提交中包含该行,因此代码在该行中断,后续行没有被执行。因此,您收到此错误。 Creating an instance from a mongoose schema should succeed
将这个解释添加到答案本身实际上会使它成为一个答案,而不仅仅是“试试这个”建议:)以上是关于FreeCodeCamp 的“MongoDB 和 Mongoose - 创建模型”挑战的问题的主要内容,如果未能解决你的问题,请参考以下文章