使用 MongoDB 或猫鼬如何更好地进行 CRUD?
How is it better to do CRUD, with MongoDB or mongoose?
我一直在努力理解整个 Node.js、MongoDB 和 Mongoose,基本上是 MERN 堆栈。
看了几遍教程,对CRUD的操作方法还是不太清楚。有时我看到它们以这种格式完成:
router.post('/', function (req, res, next) {
Book.create(req.body, function (err, post) {
if (err) return next(err);
res.json(post);
});
});
其他时候我看到它们以这种格式完成:
db.collection()
后跟一个动词,如 insert
或 findOne
或 insertOne
和一些功能。
我不明白什么时候应该使用一个或另一个。
您可以使用 mongodb 本机驱动程序,它只提供与数据库的连接,或者 Mongoose,它是 mongod 本机驱动程序之上的 ORM。 ORM 意味着您可以指定模式,使用各种帮助程序和挂钩。使用本机驱动程序,您无法做到这一点,您只能按原样使用 mongo。
对于初学者来说,最好使用本机驱动程序和终端 mongo 客户端,了解一切如何运作。稍后您可以阅读 mongoose 的文档并设置它,因为 Schema 可能很有用 - 您可以看到每个集合文档结构,在插入操作时确保仅插入指定的字段。尽管 mongoose 也有一些警告,就像任何框架或库一样。
我一直在努力理解整个 Node.js、MongoDB 和 Mongoose,基本上是 MERN 堆栈。 看了几遍教程,对CRUD的操作方法还是不太清楚。有时我看到它们以这种格式完成:
router.post('/', function (req, res, next) {
Book.create(req.body, function (err, post) {
if (err) return next(err);
res.json(post);
});
});
其他时候我看到它们以这种格式完成:
db.collection()
后跟一个动词,如 insert
或 findOne
或 insertOne
和一些功能。
我不明白什么时候应该使用一个或另一个。
您可以使用 mongodb 本机驱动程序,它只提供与数据库的连接,或者 Mongoose,它是 mongod 本机驱动程序之上的 ORM。 ORM 意味着您可以指定模式,使用各种帮助程序和挂钩。使用本机驱动程序,您无法做到这一点,您只能按原样使用 mongo。
对于初学者来说,最好使用本机驱动程序和终端 mongo 客户端,了解一切如何运作。稍后您可以阅读 mongoose 的文档并设置它,因为 Schema 可能很有用 - 您可以看到每个集合文档结构,在插入操作时确保仅插入指定的字段。尽管 mongoose 也有一些警告,就像任何框架或库一样。