2017-10-18 62 views
0

我有一个很难得到深节约为这里所描述的工作: http://www.baqend.com/guide/topics/deep-loading/#deep-saving如何获得深储蓄的工作?

我想创建一个用户,然后立即产生对未来数据的一些占位符对象,然后保存这些新创建的引用回到用户表。

这里是我的代码阵营母语:

handleRegister = (event) => { 
    this.setState({ loading: true }) 
    username = this.state.cellphone.replace(/\D/g,''); 
    db.ready().then((db) => { 
     var newUser = new db.User({ 
     'username': username 
     }); 
     db.User.register(newUser, this.state.password) 
     .then(() => { 
     var newUserData = new db.UserData({ 
      User: db.User.me, 
     }); 
     var newUserDataPrivate = new db.UserDataPrivate({ 
      User: db.User.me, 
      phone: username, 
     }); 
     var newUserStatus = new db.UserStatus({ 
      User: db.User.me, 
      status: 0, 
      licenseVerified: false, 
      backgroundChecked: false, 
      hourlyRate: 0, 
      lastUpdater: null, 
     }); 
     newUserData.doNext = newUserDataPrivate; 
     newUserDataPrivate.doNext = newUserStatus; 
     newUserData.save({depth: 2}) 
     .then (() => { 
      console.log(newUserData.id) 
      console.log(newUserDataPrivate.id) 
      console.log(newUserStatus.id) 
      //update the User with references after I get the IDs 
      //this.props.navigation.dispatch(createAccountResetStack) 
     }) 
     }) 
     .catch(error => { 
     alert(error.message) 
     }) 
    }) 
    } 

当这个运行时,会发生以下情况:

1) User is created 
2) Object in UserData is created with reference to newly created user id 
3) the console.log for UserData returns the id of the UserData object 
4) the console.log for UserDataPrivate prints null, 
5) the console.log for UserStatus prints null 
6) the UserDataPrivate and UserStatus objects are not saved to the database 

任何提示上,我做错了什么在这里?

+0

在您的下一篇文章中,您已将新对象设置为“User.UserData”,在本例中您使用了'newUserData.doNext'。您是否在架构中声明了doNext属性?指南中的doNext属性只是模式中声明的普通对象引用属性。 – hannes

回答

1
User.UserData = newUserData; 
User.UserDataPrivate = newUserDataPrivate; 
User.UserStatus = newUserStatus; 
return User.save({ depth: 1 }).then (() => { 
    this.props.navigation.dispatch(createAccountResetStack) 
}); 

这应该没有单独保存。

0

我想我的问题是,这些UserData,UserDataPrivate和UserStatus实际上引用用户,而不是彼此。

这工作:

handleRegister = (event) => { 
    this.setState({ loading: true }) 
    username = this.state.cellphone.replace(/\D/g,''); 
    db.ready().then((db) => { 
     var newUser = new db.User({ 
     'username': username 
     }); 
     db.User.register(newUser, this.state.password).then(User => { 
     console.log(db.me.id) 
     db.User.load(db.User.me.id).then(() => { 
      var newUserData = new db.UserData({ 
      User: db.User.me, 
      }); 
      var newUserDataPrivate = new db.UserDataPrivate({ 
      User: db.User.me, 
      phone: username, 
      }); 
      var newUserStatus = new db.UserStatus({ 
      User: db.User.me, 
      status: 0, 
      licenseVerified: false, 
      backgroundChecked: false, 
      hourlyRate: 0, 
      lastUpdater: null, 
      }); 
      newUserData.save() 
      newUserDataPrivate.save() 
      newUserStatus.save() 
      User.UserData = newUserData; 
      User.UserDataPrivate = newUserDataPrivate; 
      User.UserStatus = newUserStatus; 
      return User.update().then (() => { 
      this.props.navigation.dispatch(createAccountResetStack) 
      }); 
     }) 
     }) 
     .catch(error => { 
     alert(error.message) 
     }) 
    }) 
    }