MongoDB的ORM: mongoose

首先

MongoDB使用BSON格式,平常操作可以用JSON操作,非常简单。

在中文中,我们可以这样表达:无需定义集合的模式,可以自由地增加和减少列,这也很方便。

然而,作为 RDB 的开发人员,有人认为有一个模式会更容易理解。另外,如果有模式,类型将会统一,不会产生奇怪的数据,对团队开发是有利的。

我认为在MongoDB中著名的ORM是mongoose。
mongoose:https://mongoosejs.com/

安裝

使用npm安装mongoose库。

将”App.js”或”index.js”添加到启动器。

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true});

模式定义

const UsersSchema = new mongoose.Schema({
  userId: String,
  userName: String,
  age: mongoose.Schema.Types.Number,
  interests:  { type: [String] }
});

生成模型

const 用户 = mongoose.model(‘用户’, 用户模式)

准备CURD方法。

exports.create = async function(user) {
  return await new Users(user).save()
}

exports.update = async function(user) {
  return await user.save()
}

exports.get = async function(id) {
  return await Users.findById(id)
}

exports.find = async function(condition, options) {
  return await Users.find(condition, null, options)
}

exports.delete = async function(id) {
  return await Users.findByIdAndRemove(id)
}

...

请举一个召唤的例子。


const mongoUser = require('./users')

const user = {
   userId: "10000",
   userName: "yamata",
   age: 20,
   interests: ["サッカー", "読書"] 
}

const dbUser = await mongoUser.create(user)

请注意

在添加自定义列到模型数据时似乎会被忽略。

const users = await mongoUser.find(condition, options)

users.forEach(function(user) {
  // モデル以外のカラム情報を設定
  user.newCol = "new cloumn"
});

res.json(users)

注意:根据API返回的响应中并没有newCol。请注意,模型将忽略未定义的列。
无论是新建还是更新的情况下,未定义的列都将被忽略。

参考文章:https://mongoosejs.com/docs/index.html

参考资料:https://mongoosejs.com/docs/index.html

以上

广告
将在 10 秒后关闭
bannerAds