如何在Sails.js中提供自定义模型验证消息?
Sails.js返回的验证消息不是用户友好的,所以我想为需要的规则,minLength等提供自定义验证消息......但实际上并不知道如何.它不在文档中,我也检查了Anchor.js的文档w/c是Sails使用的验证器,但它也不存在.
更新:
上周没有回复,所以我实现了自己的解决方案,希望分享它,因为它可能对其他人有用 - 我如何在Sails.js中使用自定义验证消息
另一种替代和更好的方法是使用下面评论中找到的@Rifat解决方案:)
另一个非常好的选择(信用:sfb_) - https://gist.github.com/basco-johnkevin/8436644
假设我有一个票证和评论资源。门票可以有很多评论。在您的更新端点中HTTP PUT /api/tickets/<ticket_id>/,我是否应该要求客户端在更新票证时传递票证的所有字段及其所有注释?
我问了一些开发人员,他们中的一些人说我应该只传递将要修改的字段,因为它更轻,性能更快并且更易于使用。有人说我应该传递票证的所有字段及其所有注释,因为 PUT 请求应该是幂等的。但我担心的是,当评论太多时,负载会很大。
我有一个Ticket模型和一个Comment模型.故障单与Comment模型具有hasMany关系.我想通过关键字搜索门票.关键字将与故障单模型的主题属性和评论模型的主体属性相匹配.
以下代码不起作用:
var options = {
where: {
$or: [
{
subject: {
like: '%' + query + '%'
},
},
{
'Comment.body': {
like: '%' + query + '%'
},
}
]
},
include: [
{ model: Comment },
]
};
Ticket.findAll(options);
Run Code Online (Sandbox Code Playgroud)
这是错误:"可能未处理的SequelizeDatabaseError:列Ticket.Comment.body不存在"
我也试过下面的代码,但它也不起作用:
var options = {
where: {
CompanyId: req.company.id,
$or: [
{
subject: {
like: '%' + query + '%'
},
},
sequelize.cast(sequelize.col('comment.body'), 'TEXT', 'LIKE', '%' + query + '%')
]
},
include: [
{ model: …Run Code Online (Sandbox Code Playgroud) var Model = sequelize.define('Company', {
name: {
type: DataTypes.STRING,
unique: true
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,unique:true区分大小写。它允许“样本”和“样本”都保存在数据库中。是否有内置的方法来完成此任务而无需编写自定义验证程序?
我目前正在解析时间字符串并将其保存到数据库(Postgresql):
event.Time, _ := time.Parse("3:04 PM", "9:00 PM")
// value of event.Time now is: 0000-01-01 21:00:00 +0000 UTC
db.Create(&event)
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误: pq: R:"DateTimeParseError" S:"ERROR" C:"22008" M:"date/time field value out of range: \"0000-01-01T21:00:00Z\"" F:"datetime.c" L:"3540"
event.Time?????的类型是time.Time.
我还尝试将event.Time的类型设置为字符串并在 postgresql 中使用时间数据类型:
type Event struct {
Time string `gorm:"type:time
}
Run Code Online (Sandbox Code Playgroud)
但是现在在数据库中获取记录时出现错误:
sql: Scan error on column index 4: unsupported driver -> Scan pair: time.Time -> *string
Run Code Online (Sandbox Code Playgroud) 这个 sql 查询通常只需要几分钟就可以运行:
update import_parts ip
set part_manufacturer_id = pslc.part_manufacturer_id
from parts.part_supplier_line_codes pslc
where trim(lower(ip.line_code)) = trim(lower(pslc.supplier_line_code))
and (ip.status is null or ip.status != '6')
and ip.distributor_id = pslc.distributor_id
and ip.distributor_id = 196;
Run Code Online (Sandbox Code Playgroud)
但我注意到它有时会卡住并被 2 小时的 statement_timeout 自动取消。我注意到有几次,当它卡住时,autovacuum 正在运行,autovacuum 也需要很长时间才能完成运行。这是更新查询和 autovacuum 都在运行的一个实例,它们都需要很长时间才能完成运行:
^ 在这种情况下,autovacuum 在大约一个小时内完成运行,而更新查询在近 2 小时内完成运行。在其他情况下,更新查询超过 2 小时 statement_timeout,因此它会自动取消。
现在我的问题是,autovacuum (VACUUM) 是更新查询卡住或需要数小时才能完成运行的原因吗?如果是,我该怎么做才能防止更新查询卡住或变得如此缓慢?如果不是,您认为是什么导致更新查询卡住或变得如此缓慢?
我们使用的是 PostgreSQL 9.6.15
更新 1
我检查了我们的 RDS 实例是否耗尽了服务器资源。我们的实例大小是 db.t2.medium(2 个 vCPU,4GB RAM,1000 IOPS,存储类型为 iops SSD)。
这是过去 3 天的 cloudwatch 指标。请注意,在过去 3 天内,上面的更新 sql 查询卡住了多次。
更新 2
更新查询和 …
你们知道我怎样才能获得所有img标签但是在使用xpath的id为footer的div下排除img标签?
目前要在html页面上获取所有img标签,我这样做:
imgs = tree.xpath('//img')
但我想在一个id为footer的div下排除所有img标签,所以我正在做这个:
imgs = tree.xpath('//*[not(div[@id="footer"])]//img') < - 但这不起作用
postgresql ×3
node.js ×2
sequelize.js ×2
go ×1
go-gorm ×1
html ×1
javascript ×1
put ×1
rest ×1
sails.js ×1
vacuum ×1
validation ×1
web-scraping ×1
xpath ×1