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
以上