【问题标题】: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: </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>
正如所证明的那样,我希望您不要认真考虑以这种方式管理用户文档 - 很多人使用相同的名字。