À propos de la gestion des données d'Anvil-App-Server
Préface h2>
C'est bien de pouvoir exécuter l'application sur ʻanvil-app-server`, mais exécutons l'application `News Aggregater` créée sur le site [Anvil](https://anvil.works/). Même ainsi, il ne semble pas se déplacer en douceur. .. ..
J'ai fait des recherches.
Prémisse h4>
- Vous avez déjà créé l'application [News Aggregator](https://anvil.works/learn/tutorials/database-backed-apps) dans Anvil.
Environnement h4>
--Ubuntu 20.04 LTS Remix japonais
--Hyper-V Manager 10.0.18362.1
- anvil-app-server v1.1
Téléchargez et exécutez l'application News Aggregator h2>
Une fois que vous avez créé l'application, vous pouvez la télécharger à partir de `Afficher l'historique` avec la commande` git clone`.
Cliquez sur "Afficher l'historique"
Cliquez sur "Cloner avec Git"
Copiez la ligne "git clone ssh: // ~" et exécutez-la avec la commande.
git clone ssh://[email protected]:2222/324IEWAMVBYU2Y77.git News_Aggregater
XXXX
est l'adresse e-mail du compte enregistré sur le site Anvil.
- Si l'authentification à deux facteurs est activée, vous devrez utiliser la clé publique SSH, donc si vous l'utilisez, supprimez temporairement l'authentification en deux étapes. Je pense que ce sera plus facile si vous enregistrez la clé publique dans Git.
Lancez l'application avec ʻanvil-app-server`.
anvil-app-server --app News_Aggregater
Accédez à http: // localhost: 3030
avec un navigateur.
Soudain, une erreur.
Problèmes h2>
Dans l'application News Aggrigator, la `catégorie` de l'article est enregistrée à l'avance dans le tableau` categories` et sélectionnée à partir de là, mais comme l'application ne contient pas de données de table," données vides " Entraînera une erreur.
Accéder à PostgreSQL de anvil-app-server avec pgadmin4 h2>
ʻAnvil-app-server` contient son propre serveur PostgreSQL, alors accédez-y.
- Username : postgres
--Password: (le répertoire où anvil-app-server a été exécuté) /.anvi-data/postgres.password
--Port: (répertoire où anvil-app-server a été exécuté) /.anvi-data/db/postmaster.opts
Cependant, apparemment, il n'y a pas de table «articles» ou table «catégories» dont l'application devrait avoir besoin.
Pour le moment, si vous regardez le contenu de la table existante, vous trouverez les informations de la table créée par l'application dans la table ʻapp_storage_tables`.
En outre, en regardant la création de données à l'aide de l'application todo qui peut être créée avec la commande create-anvil-app
, il s'avère que des données ont été ajoutées à la table ʻapp_storage_data`.
Que voulez-vous dire h2>
De ce qui précède,
- Les informations de table utilisées par l'application sont stockées au format JSON dans la table ʻapp_storage_tables
. --Lors de l'accès aux données depuis une application, accédez aux données au format JSON dans la table ʻapp_storage_data
en fonction des informations de la table ʻapp_storage_tables`.
Il n'est pas impensable d'utiliser une méta-table du point de vue que la couche de données et la couche logique peuvent être mises en correspondance quel que soit le type d'application créée, mais c'est un mécanisme qui frustre le cœur des amateurs.
Autres h2>
Quand j'ai pu voir quel type de gestion des données était, je suis retourné sur le site d'Anvil et j'ai téléchargé les données afin d'importer les données.
Cependant, les données téléchargées ne peuvent pas être importées facilement.
Dans le cas de la table `categories` de News Aggrigator cette fois,
ID |
name |
[65114][57547127] |
entertainment |
[65114][57547131] |
business |
[65114][57547132] |
travel |
[65114][57547134] |
sport |
Il est nécessaire d'écrire les données au format JSON sous une forme cohérente avec la méta-table de la base de données locale.
- La colonne ID est "probablement" des informations lorsque les données sont sur le serveur hébergé par Anvil, donc cela ne semble pas avoir beaucoup de sens dans la base de données locale. Intuitivement, je pense qu'il s'agit d'ID de table et d'ID de ligne.