簡體   English   中英

ArangoDB Foxx模型日期時間戳不起作用

[英]ArangoDB Foxx Model date timestamp not working

我正在嘗試在ArangoDB中設置一個消息集合,該消息集合在輸入消息時加上時間戳。 但是,當我在foxx中設置模型時,如果我在模型模式中設置joi.date()joi.date().timestamp() ,它將無法工作。

我試圖在joi文檔中使用該示例並將其轉換為測試示例中的使用。

'use strict';
var Foxx = require('org/arangodb/foxx');
var joi = require('joi');

var  now = new Date();
var javascriptTimestamp = now.getTime();
var unixTimestamp = now.getTime() / 1000;

class TestMessage extends Foxx.Model {

}

TestMessage.prototype.schema = joi.object().options({abortEarly: false}).keys({
    unix: joi.date().timestamp('unix'),
    message: joi.string()

});

TestMessage.prototype.beforeUpdate = function() {
    this.set({unix: now.getTime()});
};

module.exports = TestMessage;

當我保存並測試它時,模型將不會顯示或響應開發頁面上的任何內容。

如何才能正確設置日期和/或時間戳?

我唯一能做的就是直接使用AQL,但我還是不明白如何將它集成到控制器中,我希望有一個簡單的解決方案。

joi中日期類型的問題是JSON中不支持日期對象,因此數據庫和請求中的數據表示將不匹配(您期望毫秒時間戳,但在內部,Date將存儲為JSON日期字符串)。

如果您需要能夠將日期值轉換為服務中的日期對象,請嘗試使用joi.date().iso() iso變體將解析JSON.stringify使用的格式,以便數據在往返中存活:

let isoDate = JSON.parse(JSON.stringify(new Date());
let result = joi.date().iso().validate(isoDate);
let joiDate = JSON.parse(JSON.stringify(result.value));
assert.equal(isoDate, joiDate);

您還應該使用基於函數的模型擴展而不是基於類的語法。 基於類的語法由於引擎限制而被恢復,盡管文檔顯然還沒有完全調整:

const Foxx = require('org/arangodb/foxx');
const TestMessage = Foxx.Model.extends({
  schema: {/* ... */}
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM