我试图在创建User之后在另一个Class:UserInfo中创建一个对应的对象用来存放用户信息。

下面是云函数

function getOrCreateRoles(roleName) {
  var roleQuery = new AV.Query(AV.Role)
  roleQuery.equalTo('name', roleName);
  return roleQuery.first()
      .then(function (role) {
        if (role) {
          return Promise.resolve(role)
        } else {
          return new AV.Role(roleName).save()
        }
      })
}

AV.Cloud.afterSave('_User', function (request) {
  var user = request.object
  return Promise.all([
    new UserInfo({user: user}).save(),
    getOrCreateRoles('developer')
  ]).then(function (results) {
    var info = results[0],
        developerRole = results[1]
    user.set('userinfo', info)
    var relation = developerRole.getUsers()
    relation.add(user)
    return Promise.all([
      developerRole.save(),
      user.save(),
    ])
  }).then(function (results) {
    console.log('done')
    return Promise.resolve()
  })
});

但当我创建一个新用户的时候,userinfo并不会被保存下来。debug的时候发现最后保存并没有执行完成
如果用下面下面代码替换user.set('userinfo', info)的话就可以正常执行。

 user.set('userinfo', AV.Object.createWithoutData('UserInfo', info.id))

控制台日志是否有打印出来错误?

云引擎里没有,在本地3001测试也没有,不会调用到最后的then

请问 Node SDK 版本是多少?如果是 2.0 以下的话,需要你在后面加 .catch 来捕捉错误。

Xiaopings-MacBook-Pro:Goodo_Proposal xiaopingfeng$ cat package.json
{
"name": "node-js-getting-started",
"version": "1.0.0",
"private": true,
"description": "A sample Node.js app using Express",
"main": "server.js",
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js -- "
},
"dependencies": {
"body-parser": "1.12.3",
"connect-timeout": "^1.7.0",
"cookie-parser": "^1.3.5",
"ejs": "2.3.1",
"express": "4.12.3",
"leancloud-storage": "^3.0.0",
"leanengine": "^3.0.0",
"underscore": "^1.8.3"
},
"devDependencies": {
"nodemon": "^1.11.0"
},
"engines": {
"node": "6.x"
}
}

cat node_modules/leanengine/package.json
{
"_args": [
[
{
"raw": "leanengine@^3.0.0",
"scope": null,
"escapedName": "leanengine",
"name": "leanengine",
"rawSpec": "^3.0.0",
"spec": ">=3.0.0 <4.0.0",
"type": "range"
},