JavaScript在Node.js中通过库操作数据库,常用方式包括原生驱动、查询构建器和ORM。ORM如Sequelize、TypeORM和Mongoose将数据表映射为对象,提升开发效率,支持安全查询与迁移管理,但可能存在性能损耗与学习成本,需结合项目需求选择工具。
JavaScript 本身并不直接支持数据库操作,尤其是在浏览器环境中,它无法直接访问数据库。但在 Node.js 环境中,JavaScript 可以通过各种库与数据库交互。为了更高效、安全地操作数据库,开发者通常使用 ORM(Object-Relational Mapping,对象关系映射)工具。
在服务端 JavaScript(Node.js)中,常见的数据库操作方式包括:
例如,使用 mysql2 执行查询:
const mysql = require('mysql2/promise');
const connection = await mysql.createConnection(dbConfig);
const [rows] = await connection.execute('SELECT * FROM users WHERE age > ?', [18]);
ORM 的核心是把数据库记录转成对象,让增删改查更贴近 JavaScript 编程习惯。
Sequelize
User.findAll()、user.save() 等方法。示例:
const User = sequelize.define('User', {
name: { type: DataTypes.STRING },
email: { type: DataTypes.STRING }
});
// 查询
const users = await User.findAll({ where: { age: { [Op.gt]: 18 } } });
TypeORM
示例:
@Entity()
class User {
@PrimaryGeneratedColumn()
id;
@Column()
name;
}
const user = new User();
user.name = "Alice";
await userRepository.save(user);
Mongoose(专用于 MongoDB)
示例:
const userSchema = new mongoose.Schema({ name: String, age: Number });
const User = mongoose.model('User', userSchema);
const user = new User({ name: "Bob", age: 25 });
await user.save();
使用 ORM 能带来不少好处,但也需注意其局限。
优点:
,防止 SQL 注入。需要注意的问题:
合理使用 ORM,结合原生查询或查询构建器,在开发效率和性能之间取得平衡。
基本上就这些。选哪种方式取决于项目需求、团队习惯和数据库类型。小项目可用 Knex 或 Mongoose,中大型关系型项目推荐 Sequelize 或 TypeORM。