Ваш вопрос мог бы использовать немного больше деталей, но, насколько я понимаю, вы хотите создать документ Couch DB, который действует как «таблица» пользователей.Для этого вам нужно будет создать JSON-документ в вашей Couch DB со следующими свойствами:
{
type: "user",
username: "John",
password: "*****",
mail: "blah, blah, blah",
admin: true
}
Так же, как lukecampbell указывал выше, вам нужно будет создать собственное свойство "type" дляидентифицировать каждую сущность ... Например, вместо использования свойства администратора для идентификации пользователей с привилегиями, вы можете просто изменить свойство «type»:
{
type: "admin"...
}
Для запроса базы данных и получения определенных документов,вам нужно будет использовать функцию карты.Опять же, пример lukecampbell предоставляет хорошую отправную точку:
function(doc){
if(doc.type == "user"){
emit(doc.name, doc);
}
}
Этот «запрос» даст вам «представление» каждого документа «пользовательского» объекта, упорядоченного по «doc.name».Вот где красота Couch DB становится очевидной ... Функции отображения (и сокращения) в некотором смысле похожи на запросы SQL ... Но поскольку они написаны на JavaScript, вы можете использовать логику JavaScript для формирования базы данных:
function(doc){
if(doc.type == "user" && doc.name == "John"){
emit(doc.name, doc);
}
}
Это даст вам представление о каждом «пользовательском» документе, где имя пользователя - Джон.Как вы можете видеть, в некоторых случаях написание запросов таким способом может быть гораздо более выразительным, чем SQL ... Можно даже «уткать» поля типа документа таким образом;
function(doc){
if(
doc.type == "user" &&
typeof doc.admin == "boolean"
){
emit(doc.name, "Is Admin?: " + JSON.stringify(doc.admin);
}
}
Этот «запрос"должен распечатать имя каждого" пользователя "и небольшое сообщение о состоянии (" Является ли Admin ?: true (или false) ") для каждого пользовательского документа с логическим значением для свойства admin.Что касается функций "Reduce", они чрезвычайно полезны, но гораздо важнее сначала полностью понять функции карты, потому что они ОЧЕНЬ универсальны, и в большинстве случаев хорошо написанная функция карты избавит от необходимости писать функцию "Reduce"...
В Couch DB есть НАГРУЗКИ потенциала.Этот сайт, пожалуй, лучшее место для начала;http://guide.couchdb.org/index.html - Тем не менее, в этой технологии есть и очень странные причуды, которые иногда заставляют вас переосмыслить дизайн вашей базы данных ... Одна из этих причуд кратко обсуждается здесь (см. Ответ Виктора Николье):
Что-то не так с созданием представлений Couch DB с нулевыми значениями?