简体   繁体   中英

how to save to derbyjs database properly

I want to use the userId in the session... to be able to save the users firstname and everything...

I am trying in vein to use models.add("users."+userId) in vein....

app.proto.editUser = function(){
  var userId = this.model.get('_page.userId');
  //I get d0514d00-da58-3074-b013-e075a772740c
  console.log(userId);
  this.model.add('users.'+userId,{
    'firstName':this.model.get('_page.firstName'),
    'lastName':this.model.get('_page.lastName')
  });
var user = this.model.at('users.'+userId);
this.model.set('users.'+userId+'.firstName', this.model.get('_page.firstName'));
}

That does try to set the firstName twice, but neither work even with the other commented out.... I usually get errors about rolling back.

HTML:

<index:>
  <h2>Account Information</h2><br/>
  User Id: {{_page.userId}}<br/>
  First Name: {{_page.firstName}}<br/>
  Last Name: {{_page.lastName}}<br/>
  <br/>
  <form class="form-horizontal" on-submit="editUser()">
    <div class="row">
      <div class="col-lg-6 col-sm-12">
        <div class="form-group">
          <label for="inputFirstName" class="col-sm-3 control-label">First Name</label>
          <div class="col-sm-9">
            <input type="text" value="{{_page.firstName}}" class="form-control" id="inputFirstName" placeholder="First Name">
          </div>
        </div>
      </div>
      <div class="col-lg-6 col-sm-12">
        <div class="form-group">
          <label for="inputLastName" class="col-sm-3 control-label">Last Name</label>
          <div class="col-sm-9">
            <input type="text" value="{{_page.lastName}}" class="form-control" id="inputLastName" placeholder="Last Name">
          </div>
        </div>
      </div>
    </div>
    <div class="row">
      <div class="col-lg-6 col-sm-12">
        <div class="form-group">
          <label for="inputGender" class="col-sm-3 control-label">Gender</label>
          <div class="col-sm-9">
            <select class="form-control" id="inputGender" name="gender">
                <option value="none">None</option>
                <option value="male">Male</option>
                <option value="female">Female</option>
            </select>
          </div>
        </div>
      </div>
      <div class="col-lg-6 col-sm-12">
        <div class="form-group">
          <label for="inputAge" class="col-sm-3 control-label">Age</label>
          <div class="col-sm-9">
            <input type="number" class="form-control" id="inputAge" placeholder="Age">
          </div>
        </div>
      </div>
    </div>
    <br/>
    <div class="row">
      <div class="col-sm-12">
        <div class="form-group">
            <button type="submit" class="btn btn-success">Update</button>
        </div>
      </div>
    </div>
  </form>

The error tends to be:

Op error: Operation invalid in projected collection users d0514d00-....

Everyone else seems to be doing it the same way I thought... Also do I always need to check if one exists and only use add if it does?

This is all in derby0.6

It seems that "users" might be a key collection that is reserved or something by user-login. Though I don't see it in the collections on my local database.

Using "cusers" works fine. I used the following:

this.model.add('cusers',{
    id: userId,
    firstName: this.model.get('_page.firstName'),
    lastName: this.model.get('_page.lastName')
    // "userId":userId
  });

id allows to make the _id property match; however, I don't think this is the right way.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM