如何在Mongoose Schema中存储URL值?

7

我正在将IOS应用程序中的图像上传到Firebase,Firebase返回包括类型为URL的URL在内的元数据。

我应该将它存储为以下代码中的String类型,还是有特定的类型适用于URL

var schema = new Schema({
  downloadURL: { type: String, createdDate: Date.now }
})
3个回答

9

根据文档,Mongoose没有URL的模式类型。您可以使用带有RegExp验证的字符串,或者使用一些自定义的类型,如此类型

var mongoose = require('mongoose');
require('mongoose-type-url');

var UserSchema = new mongoose.Schema({
url: {
    work: mongoose.SchemaTypes.Url,
    profile: mongoose.SchemaTypes.Url
}
});

如果有人使用“ES模块”而不是“commonjs”会怎样? - r4k3sh

7
您可以使用正则表达式来验证URL,例如:
const mongoose = require('mongoose');

var userSchema = new mongoose.Schema({
    downloadURL: {
        type: String,
        required: 'URL can\'t be empty',
        unique: true
    },
    description: {
        type: String,
        required: 'Description can\'t be empty',
    }
});

userSchema.path('downloadURL').validate((val) => {
    urlRegex = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-/]))?/;
    return urlRegex.test(val);
}, 'Invalid URL.');

7

Mongoose没有URL的模式,您可以将其存储在字符串中,并使用mongoose-Validator进行验证。

以下是它的语法:

validate: { 
  validator: value => validator.isURL(value, { protocols: ['http','https','ftp'], require_tld: true, require_protocol: true }),
  message: 'Must be a Valid URL' 
}

希望这可以帮助您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接