我们想为每一个添加的Task类的数据增加ACL,于是增加了这样的beforeSave的Hook

 AV.Cloud.beforeSave('Task', function (request) {
  if (request.currentUser) {
    var task = request.object
    var acl = new AV.ACL()
    acl.setRoleWriteAccess('admin', true)
    acl.setRoleReadAccess('admin', true)
    task.setACL(acl)
    return Promise.resolve()
  } else {
    return Promise.reject('Permission deny')
  }
 })

这时再创建Task

var Task = AV.Object.extend('Task');
var task = new Task({
  "title": "yooy",
});
var testDate = new Date('2016-06-04');
task.set('bidding_started_at', testDate)
task.save()
    .then(function (task) {
      console.log(task)
    }, function (err) {
      console.log(err)
    })

就会遇到报错
POST https://k6vrj3ba.api.lncld.net/1.1/classes/Task 400 (Bad Request)
Error: Invalid value type for field 'bidding_started_at',expect type is {:type "Date"},but it is '{:type "String"}'.

删掉
var testDate = new Date('2016-06-04');
task.set('bidding_started_at', testDate)
再执行就没问题,测试了其他名字的域,只要是Date类型的都有这个问题

再回来修改云函数,去掉 return Promise.resolve(),结果同上。
如果把return Promise.resolve() 换成 response.success()就好了

你好,能不能直接 save 一下带 bidding_started_at 字段的 Task 对象?bidding_started_at 这个 Date 字段可能有点问题。

你好,下面就是我保存Task对象的代码

var Task = AV.Object.extend('Task');
var task = new Task({
  "title": "yooy",
});
task.set('title', 'lalalalal')
var testDate = new Date('2016-06-04');
task.set('bidding_started_at', testDate)
task.save()
    .then(function (task) {
      console.log(task)
    }, function (err) {
      console.log(err)
    })

换了另一个bidding_ended_at(也是Date类型)的域也不行。

稍等,我在服务端测试一下。

function (err) 里报的错误打印出来是什么

Error: Invalid value type for field 'bidding_started_at',expect type is {:type "Date"},but it is '{:type "String"}'.

你好,我们发布了一个 3.0.2 版本修复了这个问题,可以试一下