Neo4Jneomodel.exceptions.ModelDefinitionMismatch
の太字のポートに接続された単純な Flask アプリを構築しようとしています。
import json
from flask import Flask, jsonify, request
from neomodel import StringProperty, StructuredNode, config
class Item(StructuredNode):
__primarykey__ = "name"
name = StringProperty(unique_index=True)
def create_app():
app = Flask(__name__)
config.DATABASE_URL = 'bolt://neo4j:test@db:7687'
@app.route('/', methods=['GET'])
def get_all_items():
return jsonify({'items': [item.name for item in Item.nodes]})
@app.route('/', methods=['POST'])
def create_item():
item = Item()
item.name = json.loads(request.data)['name']
item.save()
return jsonify({'item': item.__dict__})
return app
ポストリクエスト作業を行います。アイテムが実際に追加されたことをデータベースで確認できます。しかし、get リクエストは以下を返します。
neomodel.exceptions.ModelDefinitionMismatch: ラベル アイテムを持つノードは既知のオブジェクトのいずれにも解決されません
Python 3.7.0、Flask 1.0.2、neomodel 3.0.3 を使用しています
アップデート
完全な問題を与えるには: DEBUG モードで docker-compose を使用して、Docker コンテナーでアプリケーションを実行します。
Dockerfile
:_
FROM continuumio/miniconda3
COPY . /app
RUN pip install Flask gunicorn neomodel==3.3.0
EXPOSE 8000
CMD gunicorn --bind=0.0.0.0:8000 - "app.app:create_app()"
docker-compose
ファイル:
# for local development
version: '3'
services:
db:
image: neo4j:latest
environment:
NEO4J_AUTH: neo4j/test
networks:
- neo4j_db
ports:
- '7474:7474'
- '7687:7687'
flask_svc:
build: .
depends_on:
- 'db'
entrypoint:
- flask
- run
- --host=0.0.0.0
environment:
FLASK_DEBUG: 1
FLASK_APP: app.app.py
ports:
- '5000:5000'
volumes:
- '.:/app'
networks:
- neo4j_db
networks:
neo4j_db:
driver: bridge
そして、私はそれを実行します:
docker-compose up --build -d