问题描述
我需要知道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: </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>
证明了这一点,我希望您不要认真考虑以这种方式管理用户文档-许多人使用同一名称。