Мне нужно обновить объект в моем db.Json, нажав на кнопку редактирования для специальной строки в моей таблице - PullRequest
0 голосов
/ 18 декабря 2018

Я нажимаю кнопку редактирования для специальной строки в моей таблице, чтобы получить этот идентификатор объекта JSON в этой строке.Затем я отправляю обратно все данные, связанные с этим идентификатором строки, на мои входные данные для редактирования и повторного обновления этого объекта в db.Json.Нажав на btn_insert, он вызовет функцию addToJsonDb, но ничего не произойдет, и мой объект json не обновится в db.json.

У меня нет проблем с вставкой нового JSONОбъект массива JSON массива пользователей, и я делаю это каждый раз, генерируя новый уникальный идентификатор с помощью Math для добавления этого нового объекта JSON.Моя проблема заключается в обновлении объекта JSON, как я объяснил выше.

Users.vue

   <template>
    <!-- <textarea class="tinymce tiny"></textarea> -->
    <div class="container fluid">

    <form class="form1" style="border: solid 1px" >
      <div class="form-group">
        <!-- style="visibility: hidden;" -->
        <input disabled  type="text" class="form-control" id="id" placeholder="Id" v-model="usersArray.id" required>
      </div>
      <div class="form-group">
        <label>Ad Soyad</label>
        <input  type="text" class="form-control" id="name" placeholder="Name" v-model="usersArray.name" required>
      </div>
      <div class="form-group">
        <label>kullanci Adi</label>
        <input type="text" class="form-control" id="userName" placeholder="userName" v-model="usersArray.username" required>
      </div>
      <div class="form-group">
        <label>Password</label>
        <input type="password" class="form-control" id="password" placeholder="Password" v-model="usersArray.password" required>
      </div>
      <label for="custom-select" class="label">Select State</label>
      <select class="custom-select" v-model="usersArray.state" required>
        <option value="Active" selected>Active</option>
        <option value="Passive">Passive</option>
      </select>
      <br><br>
      <button id="btn_insert" type="submit" class="btn btn-primary"  v-on:click.prevent="addToJsonDb"><i class="fas fa-plus-circle"></i>Add To Json DB</button>

    </form>
    <br><br>

    <!-- npm install -g json-server -->
    <!-- json-server --watch db.json -->





    <h1 class="text-center">User Table</h1>
    <table id="tbl_user" class="table table-bordered table-dark table-hover">
      <thead>
        <tr>
          <!-- <th >id</th> -->
          <th>name</th>
          <th>username</th>
          <th>password</th>
          <th>State</th>
          <th>Edit</th>
        </tr>
      </thead>

      <tbody>
        <tr v-for="item in this.tr_items">
          <td>{{ item.name }}</td>
          <td>{{ item.username }}</td>
          <td>{{ item.password }}</td>
          <td>{{ item.state}}</td>
          <td><button type="submit" class="btn btn-danger btn-block"  v-on:click.prevent="editThis(item)">Edit</button></td>
        </tr>
      </tbody>




    </table>
    <br>





    </div>



    </template>

    <script>

    export default {
      data () {
              return {
                usersArray: [{
                      id: 0,
                      name: '',
                      username: '',
                      password: '',
                      state:''
                  }],
                  tr_items: [],

              }
            },
            methods:{

            addToJsonDb:function() {
                     if (this.usersArray.id == null)
                     {
                       var secret_id = Math.random().toString(20).substr(5,10);

                     }
                     else
                     {
                      secret_id = this.usersArray.id;
                       console.log("this id " + secret_id + " should replace with new data in json database");
                     }

                     this.usersArray.id = secret_id;
                     //push new inserted data from model=our form fields into tr_items
                     this.tr_items.push(this.usersArray);
                     this.$http.post('http://localhost:3000/users', {
                     id: secret_id,
                     name:this.usersArray.name,
                     username:this.usersArray.username,
                     password:this.usersArray.password,
                     state:this.usersArray.state,
              }).then(function(data)
              {
                console.log(data);

              });
              this.usersArray.id = '';

            },
            getdata:function(){
              var self = this;
                 $.getJSON('http://localhost:3000/users',function(data){
                   console.log(data);
                   for(var i in data) {
                      self.tr_items.push(data[i]);
                   }
                 });


            },
               editThis:function(data){
               console.log(data.id);

               var selected_user = null;
               for(var i in this.tr_items)
               {
                 if(this.tr_items[i].id == data.id )
                 {
                   selected_user = this.tr_items[i];
                   break;
                 }
               }

               if(selected_user != null) {
                  this.usersArray.id = selected_user.id;
                  this.usersArray.name = selected_user.name;
                  this.usersArray.username = selected_user.username;
                  this.usersArray.password = selected_user.password;
                  this.usersArray.state = selected_user.state;

               }
               else
               {
                 console.error(data.id + " not found in the list");
               }

            }

        },
        mounted(){

           this.getdata();

          },


    }
    </script>




    <style lang="scss" scoped>

    .form1{
      padding: 3vw;
    }



    </style>

Сначала я создал файл с именем db.json впапку моего проекта, затем я записал в нее свой массив пользователей JSON.Во-вторых, я установил виртуальный json-сервер с npm install -g json-server, а затем выполнил его с json-server --watch db.json, чтобы посмотреть мой json.db.

db.json

{
  "users": [
    {
      "id": "15759ig248",
      "name": "asdsad",
      "username": "reza_attitudead",
      "password": "123",
      "state": "Passive"
    },
    {
      "id": "9036956e1j",
      "name": "engin",
      "username": "engin",
      "password": "321",
      "state": "Active"
    }
  ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...