使用 Mongoose 的 find() 时遇到问题,正确的使用方法是啥?
Posted
技术标签:
【中文标题】使用 Mongoose 的 find() 时遇到问题,正确的使用方法是啥?【英文标题】:Having trouble using Mongoose's find(), what is the correct way to use it?使用 Mongoose 的 find() 时遇到问题,正确的使用方法是什么? 【发布时间】:2021-10-26 01:16:33 【问题描述】:我目前正在使用 mongoose 和 nodeJS 学习 MongoDB。我正在尝试将笔记存储到名为“笔记”的数据库中。为此,我首先像这样连接到数据库:
mongoose.connect(`mongodb+srv://pedro_yanez:$password@fsopen-2021-project.ngteq.mongodb.net/note-app?retryWrites=true&w=majority`,
useNewUrlParser: true,
useUnifiedTopology: true,
)
然后,我创建了一个 Note Schema 和一个 Note Model:
const noteSchema = new mongoose.Schema(
content: String,
date: Date,
important: Boolean
)
const Note = mongoose.model('Note', noteSchema)
然后,我将三个文档保存到数据库中:
const note = new Note(
content: 'Note #N',
date: new Date(),
important: true
)
note.save().then(result =>
console.log('note saved!')
mongoose.connection.close()
)
这是成功的,因为我可以在 MongoDB Atlas 的集合中看到它们,但是当我尝试使用 mongoose 的 find()
方法以下列方式查询上传的笔记时:
Note.find().then(result =>
result.forEach(note =>
console.log(note)
)
mongoose.connection.close()
)
我收到以下错误:
node_modules/mongoose/lib/query.js:2151
return cursor.toArray(cb);
^
TypeError: cursor.toArray is not a function
请注意,我附加的代码来自 HY 的“Full Stack Open 2021”课程,来自 part3.c。
我还尝试将find()
与here 所述的回调函数一起使用:
Note.find(, function (err, docs) console.log(docs));
mongoose.connection.close()
但我得到“未定义”和另一个错误:
/node_modules/mongodb/lib/collection.js:238
throw new error_1.MongoInvalidArgumentError('Method "collection.find()" accepts at most two arguments');
^
MongoInvalidArgumentError: Method "collection.find()" accepts at most two arguments
我真的可以提示我的实现出了什么问题,因为我整天都在与这个作斗争!
【问题讨论】:
【参考方案1】:我看到我们在 Fullstack open 上进行了相同的练习。 从https://mongoosejs.com/ 快速开始后,我设法记录了所有“笔记”
mongoose.connect 之后:
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function()
// Here I used the Model.find() at the end of the page and closed
// the connection as they say in the lesson.
);
这里有用,希望对你有帮助。
【讨论】:
是的,需要打开数据库连接,然后才能对其进行读取/写入。以上是关于使用 Mongoose 的 find() 时遇到问题,正确的使用方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose:使用 find() 并将值归因于变量时,save() 不是函数