Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修复';Can';t插入未定义的键,它违反了唯一约束';NeDB中的错误?_Javascript_Vue.js_Electron_Nedb - Fatal编程技术网

Javascript 如何修复';Can';t插入未定义的键,它违反了唯一约束';NeDB中的错误?

Javascript 如何修复';Can';t插入未定义的键,它违反了唯一约束';NeDB中的错误?,javascript,vue.js,electron,nedb,Javascript,Vue.js,Electron,Nedb,我正在尝试将NeDB用于我的vue.js应用程序,但在第二次尝试保存数据时出现以下错误 错误是: 无法插入未定义的键,它违反了唯一约束 我正在用electron vue制作应用程序 我检查了数据库文件,发现没有生成_id字段。我认为应该自动生成_id字段 src\renderer\datastore.js import Datastore from 'nedb' import path from 'path' import { remote } from 'electron' export de

我正在尝试将NeDB用于我的vue.js应用程序,但在第二次尝试保存数据时出现以下错误

错误是:

无法插入未定义的键,它违反了唯一约束

我正在用electron vue制作应用程序

我检查了数据库文件,发现没有生成_id字段。我认为应该自动生成_id字段

src\renderer\datastore.js

import Datastore from 'nedb'
import path from 'path'
import { remote } from 'electron'
export default new Datastore({
  autoload: true,
  filename: path.join(remote.app.getPath('userData'), '/data.db')
})
src\renderer\main.js

import db from './datastore'
Vue.prototype.$db = db
src\renderer\components\MyApp.vue

<template>
  <div>
    <form v-on:submit.prevent="insertShelf">

      <ul>
        <li>
          <label>Shelf Number</label>:
          <input type="text" name="shelfNum" v-model="newInput.shelfNum">
        </li>
      <ul v-for="(book, index) in newInput.books">
        <li>
          <label>Title</label>:
          <input type="text" name="title" v-model="book.title">
        </li>
        <li>
          <label>Author</label>:
          <input type="text" name="author" v-model="book.author">
        </li>
      </ul>
      <input type="submit" value="Submit">
    </form>
  </div>
</template>

<script>
export default {
  data () {
    return {
      newInput: {
        shelfNum: '',
        books: [
          {
            title: '',
            author: ''
          }
        ]
      },
      shelfList: []
    }
  },
  watch: {
    shelfList: {
      handler: function () {
        this.$db.insert(JSON.stringify(this.shelfList), function (err, newDoc) {
          console.log('err', err)
          console.log('newDoc', newDoc)
        })
      }
    }
  },
  methods: {
    insertShelf: function () {
      this.shelfList.push({
        shelfNum: this.newInput.shelfNum,
        books: this.newInput.books
      })

      this.newInput = {
        shelfNum: '',
        books: [
          {
            title: '',
            author: ''
          }
        ]
      }
    }
  }
}
</script>
不会产生_id场

请帮帮我。

说“[I]意识到我在字段上设置了唯一索引,但我正在升级的对象不包含该属性。这导致插入第一条记录,因为唯一字段的值未定义,但下一条记录不会插入,因为它们在唯一字段上具有相同的值。”这也是我的问题。也许是你的?表示“[I]意识到我在字段上设置了唯一索引,但我正在升级的对象不包含该属性。这导致插入第一条记录,因为唯一字段的值未定义,但下一条记录不会插入,因为它们与唯一字段的值相同。”这也是我的问题。也许是你的?
"[{\"shelfNum\":\"12345\",\"books\":[{\"title\":\"Winnie-the-Poo\",\"author\":\"A. A. Milne\"}]}]"