2016-12-05 2 views
0

Поскольку я создал свою модель пользователя поверх встроенной модели и создал новую библиотеку моделей. Но если я пытаюсь сделать отношения, это даёт ошибку «несанкционированный».My loopback model-relation не работает

Вот мои файлы:

user.json

{ 
    "name": "user", 
    "base": "User", 
    "idInjection": true, 
    "options": { 
    "validateUpsert": true 
    }, 
    "properties": { 
    "phone": { 
     "type": "string" 
    }, 
    "age": { 
     "type": "string" 
    } 
    }, 
    "validations": [], 
    "relations": { 
    "library": { 
     "type": "hasMany", 
     "model": "Library", 
     "foreignKey": "" 
    } 
    }, 
    "acls": [ 
    { 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "$everyone", 
     "permission": "ALLOW" 
    } 
    ], 
    "methods": {} 
} 

и мой library.json

{ 
    "name": "Library", 
    "base": "PersistedModel", 
    "strict": false, 
    "idInjection": true, 
    "options": { 
    "validateUpsert": true 
    }, 
    "properties": { 
    "category": { 
     "type": "string" 
    }, 
    "bookTitle": { 
     "type": "string" 
    }, 
    "author": { 
     "type": "string", 
     "required": true, 
     "index": false 
    } 
    }, 
    "validations": [], 
    "relations": { 
    "user": { 
     "type": "belongsTo", 
     "model": "user", 
     "foreignKey": "" 
    } 
    }, 
    "acls": [ 
    { 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "$everyone", 
     "permission": "ALLOW" 
    } 
    ], 
    "methods": {} 
} 

Как вы могли видеть, что внешний ключ пуст, что именно это означает, что я не Не знаю, почему нам нужно оставить пустым, и пользовательский логин работает нормально. Он возвращает мне токен доступа, который я устанавливаю в верхнем правом углу.

Я не нашел соответствующего ответа, поскольку я сохраняю свою базу данных в MongoDB.

+0

Какой HTTP-запрос вы делаете? – Overdrivr

+0

Это простой http-вызов, указывающий локально – ashishSober

+0

Какой HTTP-вызов, на какой URL-адрес? Без этой информации невозможно ответить на ваш вопрос. И, кстати, ответ, который вы отметили как действительный, не решает ничего, потому что он просто устанавливает ту же конфигурацию, что и конфигурация по умолчанию. – Overdrivr

ответ

1

пожалуйста, попробуйте это добавить в library.json

"acls": [ 
    { 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "$owner", 
     "permission": "ALLOW" 
    } 
    ] 

и в user.json файле добавить эти

"acls": [ 
    { 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "$everyone", 
     "permission": "ALLOW" 
    },{ 
     "principalType": "ROLE", 
     "principalId": "$owner", 
     "permission": "ALLOW" 

    } 
    ], 

и нужно дать разрешение владельца для обеих моделей. Пожалуйста, дайте мне знать, если вы столкнулись с какой-либо проблемой.

+0

Очень маловероятно, по умолчанию модели не заблокированы. – Overdrivr

+0

спасибо, что это работает для меня, но не знаю, будет ли другой пользователь пытаться получить доступ к тому же самому, что и должно быть, поскольку вы дали «mainId»: «$ owner», который я не знаю, что именно делает – ashishSober

+0

да, правильно, @ Overdrivr , поэтому мы даем разрешение пользователю по отдельности – ashishSober