Chcę importować obrazy w MongoDB wraz z dowolnym słownikiem. Słownik powinien zawierać tagi graficzne, których typów, liczb i nazw nie mogę znać w chwili, gdy definiuję schemat. Próbuję dodać słownika w przeddzień bez powodzenia:Dodawanie niepotwierdzonego słownika z python eve wraz z obrazkiem
curl -F"attr={\"a\":1}" -F "img_id=2asdasdasd" -F "[email protected]:\path\
1.png;type=image/png" http://127.0.0.1:5000/images
{"_status": "ERR", "_issues": {"attr": "must be of dict type"}, "_error": {"message": "Insertion failure: 1 document(s)
contain(s) error(s)", "code": 422}}
Moja definicja schematu wygląda tak:
'schema': {
#Fixed attributes
'original_name': {
'type': 'string',
'minlength': 4,
'maxlength': 1000,
},
'img_id': {
'type': 'string',
'minlength': 4,
'maxlength': 150,
'required': True,
'unique': True,
},
'img_data': {
'type': 'media'
},
#Additional attributes
'attr': {
'type': 'dict'
}
}
Czy to w ogóle możliwe? Czy należy naprawić schemat dyktowania?
EDIT Chciałem dodać zdjęcie pierwsze i słownika po nim, ale pojawia się błąd w żądaniu patch:
C:\Windows\SysWOW64>curl -X PATCH -i -H "Content-Type: application/json" -d "{\
"img_id\":\"asdasdasd\", \"attr\": {\"a\": 1}}" http://localhost:5000/images/asd
asdasd
HTTP/1.0 405 METHOD NOT ALLOWED
Content-Type: application/json
Content-Length: 106
Server: Eve/0.7.4 Werkzeug/0.9.4 Python/2.7.3
Date: Wed, 28 Jun 2017 22:55:54 GMT
{"_status": "ERR", "_error": {"message": "The method is not allowed for the requested URL.", "code": 405}}
Sprawdziłem, jak listonosz wykonuje podobną prośbę, a wysyłanie wiadomości z '--data-binary' działa. Wiem, że Twój typ zawartości powinien być dostosowany do wieloczęści, ponieważ razem wysyłasz obrazy: 'curl 'http: // localhost: 5000/images /' -H 'Content-Type: application/json' --data-binary ' {"attr": {"a": 1}} ". – gcw
@ gcw: Tak, podając dane przez -d pracował (twój json powinien zawierać img_id, ponieważ ma wymagany atrybut), ale nie mogę przesłać obrazu. Próbowałem najpierw wysłać obraz, a następnie dodać meta-intormację przy użyciu opcji -X PATCH, ale również się nie udało. –
jaki był błąd w żądaniu PATCH? – gcw