gpt4 book ai didi

javascript - 如何在 Objection.js 中管理验证与原始值

转载 作者:行者123 更新时间:2023-11-30 19:51:51 26 4
gpt4 key购买 nike

我在 Objection.js 中有这个模型:

class UserAccess extends Model {
static get tableName() {
return 'user_access'
}

static get jsonSchema() {
return {
type: 'object',
properties: {
id: {
type: 'integer'
},
user_id: {
type: 'integer'
}
timestamp: {
type: 'string',
format: 'date-time'
},
},
additionalProperties: false
}
}

$beforeInsert() {
this.timestamp = this.$knex().raw('now()')
}

static async insert(data) {
const result = await this.query().insert(data)
return result.id
}

我需要在timestamp 列中插入数据库时间。 Objection执行验证时,timestamp的值是Raw Knex Function的一个实例:

Raw {
client:
Client_MySQL2 {
config: { client: 'mysql2', connection: [Object] },
connectionSettings:
{ user: '',
password: '',
host: '',
database: '' },
driver:
{ createConnection: [Function],
connect: [Function],

// continues

所以当执行验证时,返回一个错误,因为它不是一个字符串:

Validation error: "timestamp" should be a string

有什么方法可以利用数据库时间保持验证吗?

最佳答案

您必须使用“.then()”链接查询构建器以获取查询结果或使用异步/等待。这可能有效:

async $beforeInsert() {
this.timestamp = await this.$knex().raw('now()')
}

或者:

$beforeInsert() {
this.timestamp = this.$knex().raw('now()').then(function(result) {
console.log(result)
})
}

https://knexjs.org/#Interfaces

关于javascript - 如何在 Objection.js 中管理验证与原始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54387493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com