我在学NodeJs.

为了从NodeJS连接并使用MongoDB,我看到了很多使用Monk或Mongoose的例子.

这两个库是等价的吗?它们有相同的功能还是各自有特定的用途?

作为NodeJS的初学者,我应该使用哪一种?

下面是一些使用Monk的代码示例:

var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/nodejsapp');

----
exports.userlist = function(db) {
    return function(req, res) {
        var collection = db.get('users');
        collection.find({},{},function(e,docs){
            res.render('userlist', {
                "userlist" : docs
            });
        });
    };
};

这里有一个使用mongoose 的样本:

   var mongoose = require('mongoose');
----
 mongoose.connect('localhost', 'test');
 var db = mongoose.connection;
  db.on('error', console.error.bind(console, 'connection error:'));
  db.once('open', function callback() {
   console.log('Connected to DB');
});

// User Schema
var userSchema = mongoose.Schema({
   username: { type: String, required: true, unique: true },
   email: { type: String, required: true, unique: true },
  password: { type: String, required: true},
});

推荐答案

他们是同一件事做同样的连接吗?还是他们有特定的目的?

它们是不同的,尽管它们是解决同一基本问题的两种方法.mongoose 是一种非常复杂的ORM.更多功能,但更复杂.Monk的范围较小,因此更容易理解.

我的建议是直接用基本的mongodb驱动模块开始编码.当你明白了它是如何工作的,以及它的某些部分是多么烦人时,你就会明白monk的好处,并且可以try 一下,看看你是否喜欢它.我不会向初学者推荐mongoose.Mongodb已经足够难学了,虽然mongoose可以提供帮助,但它的API非常神奇,并且假设您已经了解Mongodb的棘手方面.

Node.js相关问答推荐

使用Google Cloud控制台时,onCall方法在云功能中失败

postgresql层与应用层的序列化

使用HTTPS从NodeJS 17.9.1升级到18.0.0后,SignalR连接失败

如果非SQL函数在事务内部运行失败,PG-Promise事务会回滚吗?

MongoDB上的updateOne和findOneAndUpdate在Node.js中无法正常工作

如何在.npmrc中添加 comments ?

仅在一次查询中 MongoDB 上最近的一对位置

如何在 Firestore 函数上使用类型模型来获取字段值

Google App Engine 突然不允许我部署我的 node.js 应用程序

安装样式组件时出现react 错误

TypeError:changeChecked 不是函数

NodeJS 后端发布请求将数据作为NULL值发布到 SQL Server 表

如何申请在NextJS上下载文件的许可?

使用 Node.js 在内存中缓冲整个文件

JSHint 是否支持异步/等待?

编写可维护的事件驱动代码

Node.js 中空函数的简写

如何从 Node.js 中的 URL 获取

Node.js:如何附加到正在运行的进程并使用控制台调试服务器?

Socket.IO 连接用户数