时间:2021-07-01 10:21:17 帮助过:4人阅读
- <code>let UserSchema = mongoose.Schema({
- sn: {
- type: Number,
- // 设置唯一索引
- unique: true
- },
- name: {
- type: String,
- // 设置普通索引
- index: true
- },
- age: Number,
- status: Number,
- gender: {
- type: String,
- trim: true,
- default: '男'
- },
- pic: {
- type: String,
- set (params) {
- if (params.indexOf('http://') != 0 || params.indexOf('https://') !=0 ) {
- return "http://"+params
- }
- return params
- }
- }
- })</code>
注意:如果控制台出现下面的警告
解决方案:
在连接数据库的时候加上配置项
- <code>mongoose.connect('mongodb://testadmin:nodeing123@127.0.0.1:27017/test', {
- useNewUrlParser: true,
- // 使用createIndexes来创建索引
- useCreateIndex: true
- }, (err) => {
- if (err) {
- console.log(err)
- return
- }
- console.log('数据库连接成功')
- })</code>
文档地址:https://mongoosejs.com/docs/queries.html
这些内置的方法我们其实已经在前面增删查改中使用过一些,这里不再举例
静态方法的特点是不需要实例化就可以直接调用的
1.在Schema上定义方法
- <code>let mongoose = require('./db')
- // 3.定义Schema,例如:现在需要操作user集合(表),我们就需要给这个集合定义一个对应的Schema
- let UserSchema = mongoose.Schema({
- sn: {
- type: Number,
- // 设置唯一索引
- unique: true,
- index: true
- },
- name: {
- type: String,
- // 设置普通索引
- index: true
- },
- age: Number,
- status: Number,
- gender: {
- type: String,
- trim: true,
- default: '男'
- },
- pic: {
- type: String,
- set (params) {
- if (params.indexOf('http://') != 0 || params.indexOf('https://') !=0 ) {
- return "http://"+params
- }
- return params
- }
- }
- })
- UserSchema.statics.findBySn = function(sn, cb){
- this.find({"sn": sn}, (err, result) => {
- cb(err, result)
- })
- }
- // 4.创建模型
- let User = mongoose.model('User', UserSchema)
- module.exports = User</code>
2.调用方法
- <code>let UserModel = require('./model/users')
- UserModel.findBySn("1001", (err, result) => {
- console.log(result)
- })</code>
做数据校验的目的就是保证添加到数据库中的数据的合法性
以下是用于数据校验的各种参数
举个例子:
- <code>let UserSchema = mongoose.Schema({
- sn: {
- type: Number,
- max: 1002
- },
- name: {
- type: String,
- },
- age: Number,
- status: Number,
- gender: {
- type: String,
- trim: true,
- required: true
- },
- pic: {
- type: String,
- set (params) {
- if (params.indexOf('http://') != 0 || params.indexOf('https://') !=0 ) {
- return "http://"+params
- }
- return params
- }
- }
- })</code>
增加数据:
- <code>let UserModel = require('./model/users')
- // 增加数据
- let UserObj = new UserModel({
- sn: 1001,
- name: 'nodeing',
- age: 28,
- status: 0,
- pic: "www.baidu.com"
- })
- UserObj.save()</code>
注意:上面增加数据的时候,gender没有传,但是定义Schema的时候,又加了required参数,那么就会报下面的错误
从上面的例子我们可以看出,这些校验参数的作用实际上就是在规定数据的合法性的,不符合的数据不能存入数据库
自定义验证器是通过配置validate参数实现的,请注意看下面代码中的sn
- <code>let mongoose = require('./db')
- // 3.定义Schema,例如:现在需要操作user集合(表),我们就需要给这个集合定义一个对应的Schema
- let UserSchema = mongoose.Schema({
- sn: {
- type: String,
- validate: (sn) => {
- // 返回true表示验证通过 返回false表示验证失败
- return sn.length > 5
- }
- },
- name: {
- type: String,
- },
- age: Number,
- status: Number,
- gender: {
- type: String,
- trim: true,
- required: true
- },
- pic: {
- type: String,
- set (params) {
- if (params.indexOf('http://') != 0 || params.indexOf('https://') !=0 ) {
- return "http://"+params
- }
- return params
- }
- }
- })
- // 4.创建模型
- let User = mongoose.model('User', UserSchema)
- module.exports = User</code>
增加数据如下:
- <code>let UserModel = require('./model/users')
- // 增加数据
- let UserObj = new UserModel({
- sn: "1001",
- name: 'nodeing',
- age: 28,
- status: 0,
- gender: '男',
- pic: "www.baidu.com"
- })
- UserObj.save()</code>
注意:由于自定义验证器需要sn的长度大于5,增加的数据中sn只有4位,因此,会报如下错误:
螺钉课堂视频课程地址:http://edu.nodeing.com
MongoDB快速入门教程 (4.4)
标签:控制台 连接数 creat ati ida dex test use http