Javascript ArangoDB Foxx型号日期时间戳不工作

Javascript ArangoDB Foxx型号日期时间戳不工作,javascript,arangodb,foxx,Javascript,Arangodb,Foxx,我正在尝试在ArangoDB中设置一个消息集合,该集合将在消息输入时加上时间戳。但是,当我在foxx中设置模型时,如果我在模型模式中设置joi.date()或joi.date().timestamp(),它将不起作用 我尝试在中使用该示例,并将其转换为测试示例中使用的示例 'use strict'; var Foxx = require('org/arangodb/foxx'); var joi = require('joi'); var now = new Date(); var java

我正在尝试在ArangoDB中设置一个消息集合,该集合将在消息输入时加上时间戳。但是,当我在foxx中设置模型时,如果我在模型模式中设置
joi.date()
joi.date().timestamp()
,它将不起作用

我尝试在中使用该示例,并将其转换为测试示例中使用的示例

'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不支持日期对象,因此,数据库和请求中的数据表示形式将不匹配(您希望有毫秒时间戳,但在内部,日期将存储为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: {/* ... */}
});

答案对你有用吗?如果是,您能将其标记为“已接受”吗?如果没有,还缺什么?嗨,乔。我的回答能解决你的问题吗?你有什么需要我详细说明的吗?