Я прошел каждый шаг, добавив новый столбец базы данных в PostgreSQL, однако, когда я нажимаю кнопку, чтобы сохранить информацию в базу данных PostgreSQL после заполнения в очереди на текстовый поле, ничего не происходит. Информация не сохраняется. Я пытаюсь выяснить, почему, но без успеха в данный момент. Есть идеи, почему это не работает? Оцените отзывы, как обычно. < /p>
uss! Если какая -либо дополнительная информация , дайте мне знать, и я обновлю код! /> Константы котлина и веб -сокет, которые взяты из reders Webservice :
const val BASE_URL="your_render_webservice_api"
constant usually starting with: "https://flask-render... .com"
the websocket is mostly just used for creating a chat with messages (live chats) hence should not affect the general code of posting data.
код Flask-App:
подключение к рендерингу < /li>
< /ol>
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql: Your_external_render_api_here"
socketio = SocketIO(app)
db = SQLAlchemy(app)
< /code>
class intrintiondata: < /em> < /li>
< /ol>
class RelationshipData(db.Model):
__tablename__ = 'relationshipData'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
user_auth_id = db.Column(db.Integer, db.ForeignKey('userdetails.id'), nullable=False)
relationships = db.Column(db.String(255))
user = db.relationship('Task', backref=db.backref('relationship_Data', lazy=True))
< /code>
Размещение данных: < /em> < /li>
< /ol>
# POSTING Relationships DATA TO DATABASE
@app.route('/relationshipData', methods=['POST'])
def postRelationshipsData():
try: # Added closing parenthesis here
data = request.get_json()
newEmail = data['email']
user = Task.query.filter_by(email=newEmail).first()
if not user:
return jsonify({'error': "No User registered with this mail"}), 400
user_auth_id = user.id
relationships = data['relationships']
# Check if user details already exist
userRelationships = RelationshipData.query.filter_by(user_auth_id=user_auth_id).first()
if userRelationships:
# Update existing user details
userRelationships.relationships = relationships
message = "Updated user details"
else:
# Add new user details
userRelationships = RelationshipData(
user_auth_id=user_auth_id,
relationships=relationships,
)
db.session.add(userRelationships)
message = "Added user details"
db.session.commit()
return jsonify({'message': message}), 201
except Exception as e:
return jsonify({'error': 'Internal Server Error'}), 500
unitionmodel:
@Keep
@Entity(tableName = "UserRelationDB", indices = [Index(value = ["id"], unique = true)])
@Serializable
data class UserRelationshipModel(
@PrimaryKey
val id: Int? = null,
val relationship: String? = null,
)
Модель взаимосвязи пользователя:
@Serializable
class UserRelationModel (
val users:List
)
интерфейс userservice (содержит все методы публикации и получения пользовательских данных из всех 3 других столбцов базы данных. Это подключено к AppModule!):
@POST("relationshipData")
suspend fun postUserRelationshipData(@Body data: UserRelationshipModel): Response
class:
class UserApi @Inject constructor(
private val userService: UserService,
private val webSocketManager: WebSocketManager
) {
suspend fun postRelationshipsData(data: UserRelationshipModel): Response {
return userService.postRelationshipsData(data)
}
}
пользовательский репо:
class Repo @Inject constructor(private val userApi: UserApi) {
suspend fun postRelationshipsData(data: UserRelationshipModel): Response {
return userApi.postRelationshipsData(data)
}
}
интерфейс dao:
@Dao
interface UserRelationshipDataModelDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertUserRelationship(user: UserRelationshipModel)
@Update
suspend fun updateUserRelationship(user: UserRelationshipModel)
@Query("SELECT * FROM UserRelationDB WHERE id = :userId")
suspend fun getUserById(userId: Int): UserRelationshipModel?
@Query("SELECT * FROM UserRelationDB LIMIT 1")
suspend fun getLoggedInUser(): UserRelationshipModel?
@Query("DELETE FROM UserRelationDB")
suspend fun deleteAllUsers()
}
userrelationshiplayoutscreen:
var relationship by remember { mutableStateOf("") }
......
item {
UserInfo(
initialUserData = relationship,
label = "Relationship",
onValueChange = { relationship = it }
)
}
....
Button OnClick:
onClick = {
scope.launch {
val userData = UserRelationshipModel(
relationships = relationship
)
userCredentialsRelationshipViewModel.postUserRelationshipData(context, userData) { result ->
when (result) {
NetworkResult.Loading -> {
showLoadingAnim = true
}
is NetworkResult.Error -> {
showLoadingAnim = false
}
is NetworkResult.Success -> {
showLoadingAnim = false
userRelationshipHiltViewModel.insertUserRelationship(userData)
// Navigate the user forward
navController.navigate("${NavigationItem.UserDetails.route}/${selectedGender}")
}
}
}
Log.d("relationship model clicked", userData.toString())
}
},
usercredentialsrelationshipviewmodel:
@HiltViewModel
class UserCredentialsRelationshipViewModel@Inject constructor(private val repo: Repo) : ViewModel() {
fun postUserRelationshipData(
context: Context, userData: UserRelationshipModel,
handleResult: (NetworkResult) -> Unit
) {
viewModelScope.launch {
try {
handleResult(NetworkResult.Loading)
val result = repo.postRelationshipsData(data = userData)
if (result.isSuccessful) {
handleResult(NetworkResult.Success("User relationship added successfully"))
Toast.makeText(context, "User relationship added successfully", Toast.LENGTH_SHORT)
.show()
} else {
handleResult(NetworkResult.Error("Something went wrong"))
}
} catch (e: Exception) {
handleResult(NetworkResult.Error("Something went wrong"))
Toast.makeText(context, e.message.toString(), Toast.LENGTH_LONG).show()
Log.d("postDataError", e.message.toString())
e.printStackTrace()
}
}
}
}
userrelationshiletviewmodel:
@HiltViewModel
class UserRelationshipHiltViewModel @Inject constructor(private val userRelationshipDataModelDao: UserRelationshipDataModelDao)
: ViewModel() {
private val _loggedInUser = MutableLiveData()
val loggedInUser: LiveData get() = _loggedInUser
fun insertUserRelationship(user: UserRelationshipModel) {
viewModelScope.launch {
try {
userRelationshipDataModelDao.insertUserRelationship(user)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
fun deleteUser() {
viewModelScope.launch {
try {
userRelationshipDataModelDao.deleteAllUsers()
} catch (e: Exception) {
e.printStackTrace()
}
}
}
// Update an existing user
fun updateUser(user: UserRelationshipModel) {
viewModelScope.launch {
_loggedInUser.postValue(user)
userRelationshipDataModelDao.updateUserRelationship(user)
}
}
// Get a user by their ID
fun getUserById(userId: Int) {
viewModelScope.launch {
val user = userRelationshipDataModelDao.getUserById(userId)
}
}
fun getLoggedInUser() {
viewModelScope.launch {
try {
val user = userRelationshipDataModelDao.getLoggedInUser()
_loggedInUser.postValue(user)
} catch (e: Exception) {
_loggedInUser.postValue(null) // or handle the exception as needed
}
}
}
}
userinfodatabase:
@Database(entities = [UserDataModel::class,UserMatchEntity::class, UserRelationshipModel::class,],version =6,exportSchema = true)
@TypeConverters(Converters::class)
abstract class UserInfoDatabase:RoomDatabase() {
abstract fun userDataModelDao():UserDataModelDao
abstract fun userMatch():UserMatchDao
abstract fun userRelationshipDataModelDao(): UserRelationshipDataModelDao
}
appmodule:
@Singleton
@Provides
fun provideRelationshipDao(userInfoDatabase: UserInfoDatabase): UserRelationshipDataModelDao{
return userInfoDatabase.userRelationshipDataModelDao()
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... -using-jet
Как успешно сохранить данные в другом столбце базы данных в PostgreSQL с помощью JetPack Compose? ⇐ Android
Форум для тех, кто программирует под Android
1738079110
Anonymous
Я прошел каждый шаг, добавив новый столбец базы данных в PostgreSQL, однако, когда я нажимаю кнопку, чтобы сохранить информацию в базу данных PostgreSQL после заполнения в очереди на текстовый поле, ничего не происходит. Информация не сохраняется. Я пытаюсь выяснить, почему, но без успеха в данный момент. Есть идеи, почему это не работает? Оцените отзывы, как обычно. < /p>
uss! Если какая -либо [b] дополнительная информация [/b], дайте мне знать, и я обновлю код! /> Константы котлина и веб -сокет, которые взяты из reders Webservice :
const val BASE_URL="your_render_webservice_api"
constant usually starting with: "https://flask-render... .com"
the websocket is mostly just used for creating a chat with messages (live chats) hence should not affect the general code of posting data.
[b] код Flask-App: [/b]
подключение к рендерингу < /li>
< /ol>
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql: Your_external_render_api_here"
socketio = SocketIO(app)
db = SQLAlchemy(app)
< /code>
class intrintiondata: < /em> < /li>
< /ol>
class RelationshipData(db.Model):
__tablename__ = 'relationshipData'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
user_auth_id = db.Column(db.Integer, db.ForeignKey('userdetails.id'), nullable=False)
relationships = db.Column(db.String(255))
user = db.relationship('Task', backref=db.backref('relationship_Data', lazy=True))
< /code>
Размещение данных: < /em> < /li>
< /ol>
# POSTING Relationships DATA TO DATABASE
@app.route('/relationshipData', methods=['POST'])
def postRelationshipsData():
try: # Added closing parenthesis here
data = request.get_json()
newEmail = data['email']
user = Task.query.filter_by(email=newEmail).first()
if not user:
return jsonify({'error': "No User registered with this mail"}), 400
user_auth_id = user.id
relationships = data['relationships']
# Check if user details already exist
userRelationships = RelationshipData.query.filter_by(user_auth_id=user_auth_id).first()
if userRelationships:
# Update existing user details
userRelationships.relationships = relationships
message = "Updated user details"
else:
# Add new user details
userRelationships = RelationshipData(
user_auth_id=user_auth_id,
relationships=relationships,
)
db.session.add(userRelationships)
message = "Added user details"
db.session.commit()
return jsonify({'message': message}), 201
except Exception as e:
return jsonify({'error': 'Internal Server Error'}), 500
[b] unitionmodel: [/b]
@Keep
@Entity(tableName = "UserRelationDB", indices = [Index(value = ["id"], unique = true)])
@Serializable
data class UserRelationshipModel(
@PrimaryKey
val id: Int? = null,
val relationship: String? = null,
)
[b] Модель взаимосвязи пользователя: [/b]
@Serializable
class UserRelationModel (
val users:List
)
[b] интерфейс userservice [/b] (содержит все методы публикации и получения пользовательских данных из всех 3 других столбцов базы данных. Это подключено к AppModule!):
@POST("relationshipData")
suspend fun postUserRelationshipData(@Body data: UserRelationshipModel): Response
[b] class: [/b]
class UserApi @Inject constructor(
private val userService: UserService,
private val webSocketManager: WebSocketManager
) {
suspend fun postRelationshipsData(data: UserRelationshipModel): Response {
return userService.postRelationshipsData(data)
}
}
[b] пользовательский репо: [/b]
class Repo @Inject constructor(private val userApi: UserApi) {
suspend fun postRelationshipsData(data: UserRelationshipModel): Response {
return userApi.postRelationshipsData(data)
}
}
[b] интерфейс dao: [/b]
@Dao
interface UserRelationshipDataModelDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertUserRelationship(user: UserRelationshipModel)
@Update
suspend fun updateUserRelationship(user: UserRelationshipModel)
@Query("SELECT * FROM UserRelationDB WHERE id = :userId")
suspend fun getUserById(userId: Int): UserRelationshipModel?
@Query("SELECT * FROM UserRelationDB LIMIT 1")
suspend fun getLoggedInUser(): UserRelationshipModel?
@Query("DELETE FROM UserRelationDB")
suspend fun deleteAllUsers()
}
[b] userrelationshiplayoutscreen: [/b]
var relationship by remember { mutableStateOf("") }
......
item {
UserInfo(
initialUserData = relationship,
label = "Relationship",
onValueChange = { relationship = it }
)
}
....
Button OnClick:
onClick = {
scope.launch {
val userData = UserRelationshipModel(
relationships = relationship
)
userCredentialsRelationshipViewModel.postUserRelationshipData(context, userData) { result ->
when (result) {
NetworkResult.Loading -> {
showLoadingAnim = true
}
is NetworkResult.Error -> {
showLoadingAnim = false
}
is NetworkResult.Success -> {
showLoadingAnim = false
userRelationshipHiltViewModel.insertUserRelationship(userData)
// Navigate the user forward
navController.navigate("${NavigationItem.UserDetails.route}/${selectedGender}")
}
}
}
Log.d("relationship model clicked", userData.toString())
}
},
[b] usercredentialsrelationshipviewmodel: [/b]
@HiltViewModel
class UserCredentialsRelationshipViewModel@Inject constructor(private val repo: Repo) : ViewModel() {
fun postUserRelationshipData(
context: Context, userData: UserRelationshipModel,
handleResult: (NetworkResult) -> Unit
) {
viewModelScope.launch {
try {
handleResult(NetworkResult.Loading)
val result = repo.postRelationshipsData(data = userData)
if (result.isSuccessful) {
handleResult(NetworkResult.Success("User relationship added successfully"))
Toast.makeText(context, "User relationship added successfully", Toast.LENGTH_SHORT)
.show()
} else {
handleResult(NetworkResult.Error("Something went wrong"))
}
} catch (e: Exception) {
handleResult(NetworkResult.Error("Something went wrong"))
Toast.makeText(context, e.message.toString(), Toast.LENGTH_LONG).show()
Log.d("postDataError", e.message.toString())
e.printStackTrace()
}
}
}
}
[b] userrelationshiletviewmodel: [/b]
@HiltViewModel
class UserRelationshipHiltViewModel @Inject constructor(private val userRelationshipDataModelDao: UserRelationshipDataModelDao)
: ViewModel() {
private val _loggedInUser = MutableLiveData()
val loggedInUser: LiveData get() = _loggedInUser
fun insertUserRelationship(user: UserRelationshipModel) {
viewModelScope.launch {
try {
userRelationshipDataModelDao.insertUserRelationship(user)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
fun deleteUser() {
viewModelScope.launch {
try {
userRelationshipDataModelDao.deleteAllUsers()
} catch (e: Exception) {
e.printStackTrace()
}
}
}
// Update an existing user
fun updateUser(user: UserRelationshipModel) {
viewModelScope.launch {
_loggedInUser.postValue(user)
userRelationshipDataModelDao.updateUserRelationship(user)
}
}
// Get a user by their ID
fun getUserById(userId: Int) {
viewModelScope.launch {
val user = userRelationshipDataModelDao.getUserById(userId)
}
}
fun getLoggedInUser() {
viewModelScope.launch {
try {
val user = userRelationshipDataModelDao.getLoggedInUser()
_loggedInUser.postValue(user)
} catch (e: Exception) {
_loggedInUser.postValue(null) // or handle the exception as needed
}
}
}
}
[b] userinfodatabase: [/b]
@Database(entities = [UserDataModel::class,UserMatchEntity::class, UserRelationshipModel::class,],version =6,exportSchema = true)
@TypeConverters(Converters::class)
abstract class UserInfoDatabase:RoomDatabase() {
abstract fun userDataModelDao():UserDataModelDao
abstract fun userMatch():UserMatchDao
abstract fun userRelationshipDataModelDao(): UserRelationshipDataModelDao
}
[b] appmodule: [/b]
@Singleton
@Provides
fun provideRelationshipDao(userInfoDatabase: UserInfoDatabase): UserRelationshipDataModelDao{
return userInfoDatabase.userRelationshipDataModelDao()
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79377851/how-to-successfully-save-data-to-another-database-column-in-postgresql-using-jet[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия