为什么Nodejs的项目大多是用 require("mongodb"),感觉这个写起来好麻烦,有人用mongoskin吗,这个貌似要简洁些

为什么Nodejs的项目大多是用 require(“mongodb”),感觉这个写起来好麻烦,有人用mongoskin吗,这个貌似要简洁些

示例代码

var mongo = require("mongodb"),
  Server = mongo.Server,
  mongoServer = new mongo.Server('localhost', 27017,server_options),
  db=new mongo.Db('test',mongoServer , db_options);
db.open(function(err){
  
  if(!err){
    
     db.collection('blog',{safe:true},function(err,coll){
           if(!err){
               
               coll.find().toArray(function(err,docs){
                                  
               console.log(docs);
                    
                   db.close();
              
                }); 
   
           }

     });
     
     
 }
});

mongoskin

var db = require('mongoskin').db('localhost:27017/test');
db.collection('blog').find().toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
});

php

  $mg=new Mongo('localhost');
  $coll=$mg->selectCollection('test','blog');
  $rows=$coll->find();

8 回复

为什么Node.js的项目大多是用 require("mongodb"),感觉这个写起来好麻烦,有人用mongoskin吗,这个貌似要简洁些?

示例代码

首先,让我们看看使用 require("mongodb") 的方式:

// 使用原生 MongoDB 驱动
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("test");
  dbo.collection("blog").find({}).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});

在这个例子中,我们使用了 require("mongodb") 提供的 MongoClient 类来连接到 MongoDB 数据库,并获取一个集合来执行查询。

mongoskin 的简洁性

接下来,让我们看看如何使用 mongoskin 来简化上述操作:

// 使用 mongoskin
var db = require('mongoskin').db('localhost:27017/test');

db.collection('blog').find().toArray(function(err, result) {
  if (err) throw err;
  console.log(result);
  db.close();
});

mongoskin 中,你可以直接通过一个简单的 URL 连接到数据库,并且可以立即使用 collection() 方法来访问集合。这使得代码更加简洁易读。

总结

  • require("mongodb"):虽然代码略显冗长,但它提供了更多的灵活性和控制,例如连接选项、错误处理等。
  • mongoskin:代码更简洁,但可能在灵活性上有所欠缺。如果你的项目不需要复杂的配置或高级功能,mongoskin 可以是一个很好的选择。

无论你选择哪种方式,确保你的代码能够满足项目的实际需求。


mongoskin 看来不错。

我一直用 mongodb 驱动是因为这是官方版。在 mongodb 基础上我也自己包裹了一下,界面和 mongoskin 差不多。

用的不习惯自己封装一层不就好了

其实Mongoose跟符合逻辑一点~

坚持用MYSQL的飘过…

我已经改用mongojs,貌似比mongoskin快~~

我用楼主提供的那段MongoSkin代码在node.js里运行,总是出现如下error:

var db = require(‘mongoskin’).db(‘localhost:27017/test’); db.collection(‘blog’).find().toArray(function(err, result) { if (err) throw err; console.log(result); db.close(); });

报错信息:

TypeError: Cannot read property ‘name’ of undefined at Object.makeSkinClass (d:\progra~1\nodejs\node_modules\mongoskin\lib\utils.js:33:43) at Object.<anonymous> (d:\progra~1\nodejs\node_modules\mongoskin\lib\mongo_client.js:7:29) at Module._compile (module.js:456:26) at Object.Module._extensions…js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) at require (module.js:380:17) at d:\progra~1\nodejs\node_modules\mongoskin\lib\index.js:25:15 at Array.forEach (native)

在Node.js项目中,require("mongodb") 是官方MongoDB驱动程序的标准使用方式。这种方式虽然显得稍微繁琐一些,但提供了完整的功能、更好的性能以及官方支持。

然而,mongoskin 这个库简化了对数据库的操作过程,使代码看起来更简洁。以下是两者的比较和示例代码:

使用 require("mongodb")

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});

使用 mongoskin

var db = require('mongoskin').db('localhost:27017/test');
db.collection('blog').find().toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
});

可以看到,在使用 mongoskin 时,代码确实更加简洁。但是,需要注意的是,mongoskin 已经不再维护,并且可能在未来的版本中不再兼容。因此,建议还是使用官方的 mongodb 驱动,以确保项目的长期稳定性和安全性。

回到顶部