查看_id是否已存在于PouchDB中

问题描述

我需要知道PouchDB中是否已经使用了用户名

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

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

解决方法

尝试将文档与现有put放在一起时,

_id将返回 409冲突。无需执行飞行前检查。

下面的代码段使用内存适配器创建了一个PouchDB,并添加了一个_id为'Jerry Garcia'的文档。尝试添加另一个具有相同名称的用户。

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>

证明了这一点,我希望您不要认真考虑以这种方式管理用户文档-许多人使用同一名称。