2017-10-18 43 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) 
     }) 
    }) 
    }