66

我正在学习 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},
});
4

2 回答 2

78

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

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

mongodb我的建议是直接使用基本驱动模块开始编码。当您了解它的工作原理以及它的某些部分是如何令人讨厌时,您将了解它的好处monk并可以尝试一下,看看您是否喜欢它。我不会推荐mongoose给初学者。Mongodb 已经足够难学了,虽然 mongoose 会有所帮助,但它的 API 非常神奇,并且假设您已经知道 mongodb 的棘手方面。

于 2014-05-12T18:10:01.737 回答
29

If you are learning NodeJS and Mongo, you really dont need anything else -- in fact, MongoDB offers a free online class for MongoDB and NodeJS developers. No need for any additional wrappers.

See https://university.mongodb.com/

于 2014-05-14T15:28:37.973 回答