MongoDB数据库:
- 安装mongoose:
npm i mongoose
- 安装validator:
npm i validator
mongoose 创建 collection model,指定各个字段数据类型,提供最基本的验证。但是复杂的验证就需要使用 npm validator。
sample code:
const mongoose = require("mongoose");
const validator = require("validator");
mongoose.connect("mongodb://127.0.0.1:27017/task-manager-api", {
useNewUrlParser: true,
// useCreateIndex: true, not supported
});
// 创建一个名称为users的collection:姓名,email,密码,年龄
const User = mongoose.model("User", {
name: {
type: String, // 姓名为字符串
required: true, // 必须提供
trim: true, // 修剪:删除字符串前后的空格
default: "Anymonous", // 如果没有提供姓名,使用“Anymous”作为姓名
},
email: {
type: String, // email 为字符串
required: true, // 必须提供
trim: true, // 删除前后空格
lowercase: true, // 转换为小写字符串
validate(value) { // 合法性验证
if (!validator.isEmail(value)) { // 使用validator !
throw new Error("Email is not valid!");
}
},
},
password: {
type: String,
required: true,
minLength: 7, // 密码长度大于等于7
trim: true,
validate(value) { // 不允许密码中含有"password"字样
if (value.toLowerCase().includes("password")) {
throw new Error("Password should not contain 'password'!");
}
},
},
age: {
type: Number,
default: 0, // age 非必要字段,不提供则设默认值0.
validate(value) {
if (value < 0) { // 年龄不允许为负
throw new Error("Age must be positve!");
}
},
},
});
// 可以修改各个字段,使用valid和invalid 值进行测试:
const me = new User({
name: "Erin",
password: "pass",
email: "MYEmail@Mail.com",
age: 21,
});
me.save()
.then(() => console.log(me))
.catch((error) => console.log(error));