簡體   English   中英

獲取表單數據后如何在 Sails.js 中發送操作?

[英]How do I send an action in Sails.js after getting form data?

目前,我可以從我的 html 獲取表單數據,但事后並未觸發該操作。 我正在嘗試注冊用戶,但我的注冊操作文件永遠無法訪問。 單擊提交后,我沒有收到任何錯誤,但也沒有創建新用戶。 任何幫助表示贊賞。 謝謝:)

注冊.ejs

<h2>Please Sign up.</h2>
<div class="container">
    <div class="signup-form">
        <ajax-form class="ajax-form" action="signup"  :handle-parsing="handleParsingForm">
    <div class="form-group">
        <label for="username">Username</label>
        <input class="form-control" id="username" type="text"  :class="[formErrors.username 
               ? 'is-invalid' : '']" v-model.trim="formData.username" placeholder="Sturgis P. Sturgeon" 
               autocomplete="name" focus-first>
        <div class="invalid-feedback" v-if="formErrors.username">Please enter your full 
             name.</div>
      </div>
      <div class="form-group">
        <label for="password">Choose a password</label>
        <input class="form-control" id="password" type="password"  :class=". 
               [formErrors.password ? 'is-invalid' : '']" v-model.trim="formData.password" 
               placeholder="••••••••" autocomplete="new-password">
    <div class="invalid-feedback" v-if="formErrors.password">Please enter a password</div>
      </div>
      <div class="form-group">
        <label for="confirm-password">Confirm password</label>
        <input class="form-control" id="confirm-password" type="password"  :class=". 
          [formErrors.confirmPassword ? 'is-invalid' : '']" v-model.trim="formData.confirmPassword" 
          placeholder="••••••••" autocomplete="new-password">
            <div class="invalid-feedback" v-if="formErrors.confirmPassword">Your password 
            and confirmation do not match.</div>
      </div>

      <ajax-button type="submit" class="btn ajax-button" :class="[syncing ? 'syncing' : 
                   '']">Submit</ajax-button>
</form>
    </div>
</div>
</div>

路線

`"POST /signup": {action: 'signup'}`

雲設置

`"signup":{
  "verb":"POST","url":"/signup","args":["username","password"]
}`

句柄解析表單

`handleParsingForm: function() {
      this.formErrors = {};

      var argins = this.formData;

  if(!argins.username) {
    this.formErrors.username = true;
  }
  if(!argins.password) {
    this.formErrors.password = true;
  }
  if(argins.password && argins.password !== argins.confirmPassword) {
    this.formErrors.confirmPassword = true;
  }
  if (Object.keys(this.formErrors).length > 0) {
    return;
  }

  return argins;
}

注冊操作

`signup: async function (inputs) {
  const { username, password, confirmPassword } = inputs;
  try {
      let existingUser = await User.findOne({
          username
      })
      if (existingUser) {
          throw(400, 'That username is already taken.')
      }
  } catch (error) {
      throw(error);
  }
  finally {
    if (password === confirmPassword) {
      let newUser = {username, password}
      bcrypt.genSalt(10, (err, salt) => {
          bcrypt.hash(password1, salt, (err, hash) => {
              newUser.password = hash;
              User.create(newUser);
          });
      })
  // };
};
  // this.req.session.userId = newUser.id;
  // return newUser;
  }`

路線應該是

'POST /api/v1/signup': { action: 'signup' }

然后重新運行sails run rebuild-cloud-sdk

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM