可能是一个最招人烦的问题了,但还是想问一下 Nodejs 相关问题

可能是一个最招人烦的问题了,但还是想问一下 Nodejs 相关问题

如题,想知道目前在node 应用中,关于mongo 数据库方面大家用的最多的或者说用的最广泛的orm 是什么?在npm上看了下mongoose,下载量有5487,mongoskin 是738 不知道大家都用的是什么?或者说哪个更人性化一些

10 回复

当然可以!让我们来探讨一下在 Node.js 应用中使用 MongoDB 时,ORM(对象关系映射)工具的选择。通常,开发者们会倾向于选择那些功能强大、社区活跃且易于使用的工具。目前,在 Node.js 社区中,Mongoose 和 Mongoskin 是两个非常流行的选项。

Mongoose

Mongoose 是一个非常流行的 ORM 工具,它提供了许多高级功能,如模式验证、虚拟属性、中间件等。由于这些特性,Mongoose 成为了许多开发者在处理 MongoDB 数据库时的首选。

示例代码:

const mongoose = require('mongoose');

// 连接到 MongoDB 数据库
mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });

// 定义一个简单的 Schema
const userSchema = new mongoose.Schema({
    name: String,
    age: Number
});

// 创建模型
const User = mongoose.model('User', userSchema);

// 创建一个新的用户
const newUser = new User({ name: 'John Doe', age: 30 });

// 保存用户到数据库
newUser.save()
    .then(() => console.log('User saved'))
    .catch(err => console.error('Error saving user:', err));

// 查询所有用户
User.find()
    .then(users => console.log('All users:', users))
    .catch(err => console.error('Error fetching users:', err));

Mongoskin

Mongoskin 是另一个流行的选项,它的设计目标是提供一个更简洁的 API 来操作 MongoDB。然而,由于其较旧的设计和维护状况,许多开发者已经转向了 Mongoose 或其他更新的库。

示例代码:

const mongo = require('mongoskin');

// 连接到 MongoDB 数据库
const db = mongo.db('mongodb://localhost:27017/mydatabase', { native_parser: true });

// 插入一条记录
db.collection('users').insert({ name: 'Jane Doe', age: 25 }, (err, result) => {
    if (err) {
        console.error('Error inserting user:', err);
    } else {
        console.log('User inserted:', result);
    }
});

// 查找所有记录
db.collection('users').find().toArray((err, users) => {
    if (err) {
        console.error('Error fetching users:', err);
    } else {
        console.log('All users:', users);
    }
});

总结

虽然 Mongoskin 在某些情况下仍然有用,但 Mongoose 因其强大的功能和良好的社区支持而被广泛使用。如果你需要复杂的查询和数据验证,Mongoose 是一个更好的选择。如果只是简单的插入和查询,Mongoskin 可能更简单直接。

希望这些信息对你有所帮助!


哥用原始的mongodb

mongoose啊。。。。。。。不過我現在才覺得 真到了nb的地方 還是根據自己的需要優化MongoDB優化Driver 什麼orm odm在此時都是小兒科了。。。 昨天面試完之後的感覺。。。

我用的是sails.js自带的waterline,觉得还不错,支持跨数据库外键

原生node-mongo-native还行 给几个方法报上promise 就可以在koa中用了

这样搞的话,代码太多了,每一个小的操作都要做error的处理。。。。

刚刚查了下,skin是淘宝kissy团队的,也许是国产的原因,不如官方使用人数多啊

mongoskin没用过,刚用mongoose,我觉得如果是出于研究的话,用原生的最好了

对于Node.js应用中MongoDB的ORM选择,Mongoose是最广泛使用且非常受欢迎的。尽管Mongoskin的下载量较低,但Mongoose提供了更多的功能和更好的用户体验。

Mongoose 示例代码

Mongoose提供了一种简单的模式定义方式来操作MongoDB,同时也提供了强大的查询和验证功能。

安装 Mongoose

npm install mongoose

基本示例

  1. 定义一个简单的用户模型

    const mongoose = require('mongoose');
    const Schema = mongoose.Schema;
    
    // 定义用户Schema
    const UserSchema = new Schema({
        name: { type: String, required: true },
        email: { type: String, required: true, unique: true },
        password: { type: String, required: true },
        createdAt: { type: Date, default: Date.now }
    });
    
    // 创建模型
    const User = mongoose.model('User', UserSchema);
    
    module.exports = User;
    
  2. 连接数据库

    const mongoose = require('mongoose');
    
    mongoose.connect('mongodb://localhost/mydatabase', {
        useNewUrlParser: true,
        useUnifiedTopology: true
    }).then(() => console.log('Connected to MongoDB'))
      .catch(err => console.error('Could not connect to MongoDB', err));
    
  3. 基本CRUD操作

    const User = require('./models/User');  // 引入刚刚定义的User模型
    
    // 创建新用户
    const newUser = new User({
        name: 'John Doe',
        email: 'john@example.com',
        password: 'secret'
    });
    newUser.save()
        .then(() => console.log('User saved'))
        .catch(err => console.error('Error saving user:', err));
    
    // 查询所有用户
    User.find()
        .then(users => console.log(users))
        .catch(err => console.error('Error finding users:', err));
    
    // 更新用户信息
    User.findByIdAndUpdate(newUser._id, { name: 'Jane Doe' })
        .then(() => console.log('User updated'))
        .catch(err => console.error('Error updating user:', err));
    
    // 删除用户
    User.findByIdAndDelete(newUser._id)
        .then(() => console.log('User deleted'))
        .catch(err => console.error('Error deleting user:', err));
    

总结

Mongoose不仅提供了方便的API来操作MongoDB,而且还有丰富的文档和社区支持。虽然它相比原生驱动来说性能稍差,但对于大多数应用场景来说已经足够了。如果你需要一个更轻量级的选择,可以考虑使用mongojsmongodb-native,但这些库在功能和易用性方面可能不如Mongoose。

回到顶部