Поместите идентификатор автора в идентификатор заказа.Например:
- Заказ:
{ "_id": "order/jack/1", ... }
- Ответ заказа:
{ "ref": "order/jack/1", ... }
Так что вы можете проверить с помощью:
if (userCtx.roles.indexOf('employee') !== -1) {
if (newDoc.type === 'order_reply') {
require(userCtx.name === newDoc.ref.split('/', 3)[1], "this is not your order reply!");
}
}
Если у вас несколько авторов, используйте "order/author1/author2/.../authorN/ordernum"
как _id
заказа и проверьте с помощью:
var parts = newDoc.ref.split('/'),
authors = parts.slice(1, -1);
require(authors.indexOf(userCtx.name) !== -1, "this is not your order reply!");
ОБНОВЛЕНИЕ: Из-за ошибки COUCHDB-1229 , использование "/" в doc._id может вызвать проблемы.В зависимости от вашего варианта использования может быть лучше использовать другой разделитель, например, ":".