【问题标题】:Look if _id already exists in PouchDB查看 PouchDB 中是否已经存在 _id
【发布时间】:2020-10-05 05:39:10
【问题描述】:

我需要知道某个用户名是否已在 PouchDB 中使用。

到目前为止我的数据库代码:

const userdb = new PouchDB('users')
userdb.put({
      '_id': data.username,
      'username' : data.username,
      'gender': data.gender,
    })

【问题讨论】:

    标签: javascript node.js database pouchdb


    【解决方案1】:

    put 在尝试使用现有的_id 放置文档时将返回409 冲突。无需进行预检。

    下面的 sn-p 使用内存适配器创建一个 PouchDB,并添加一个包含“Jerry Garcia”_id 的文档。尝试添加其他同名用户。

    const addUser = async(userName, viewElement) => {
      let response;
      try {
        response = await db.put({
          '_id': userName
        })
      } catch (e) {
        response = e;
      } finally {
        viewElement.innerText = JSON.stringify(response, undefined, 3);
      }
    }
    
    // canned test documents
    function getDocsToInstall() {
      return [{
        "_id": "Jerry Garcia"
      }]
    }
    
    //
    //  boilerplate code
    //
    let db;
    
    // init example db instance
    async function initDb() {
    
      db = new PouchDB('test', {
        adapter: 'memory'
      });
    
      await db.bulkDocs(getDocsToInstall());
    }
    
    initDb();
    
    const getEl = id => document.getElementById(id);
    .label {
      text-align: right;
      margin-right: 1em;
    }
    
    .hints {
      font-size: smaller;
      margin-right: 2em;
    }
    <table id='view'>
      <tr>
        <td>
          <label for='user_name'>User Name:&nbsp;</label>
          <input id='user_name' type='text' placeholder="Jerry Garcia" />
        </td>
        <td>
          <button onclick='addUser(getEl("user_name").value,getEl("view_result"))'>Add User</button>
        </td>
      </tr>
      <tr>
        <td><span class='hints'>(enter Jerry Garcia)</span></td>
      </tr>
    </table>
    <div style='margin-top:2em'></div>
    <div>
      <pre id='view_result'></pre>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/pouchdb@7.1.1/dist/pouchdb.min.js"></script>
    <script src="https://github.com/pouchdb/pouchdb/releases/download/7.1.1/pouchdb.memory.min.js"></script>

    正如所证明的那样,我希望您不要认真考虑以这种方式管理用户文档 - 很多人使用相同的名字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多