I am using appwrite 1.3.7 , when writing functions in dart , the function not executing "print" commands inside "if" statements or after".then" or in functions other than "start" function
your function might be returning before those then callbacks are being executed. it would help if you shared your actual code
import 'dart:convert';
import 'package:dart_appwrite/dart_appwrite.dart';
import 'car_model.dart';
Future<String?> isAdvertiserExists({required String userId, required Databases db}) async {
String? res;
try {
db.listDocuments(
databaseId: "VipcarDatabaseV3",
collectionId: "Advertiser",
queries: [
Query.equal('user_id', [userId]),
]).then((adv){
if(adv.documents.isNotEmpty){
res= adv.documents[0].$id;
print("Document id : ${adv.documents[0].$id}");
}else{
print("Document not found");
res = null;
}
});
} catch (e) {
print(e.toString());
print("isAdvertiserExists function error");
}
return res;
}
Future<void> start(final req, final res) async {
final client = Client();
final database = Databases(client);
if (req.variables['APPWRITE_FUNCTION_ENDPOINT'] == null ||
req.variables['APPWRITE_FUNCTION_PROJECT_ID'] == null ||
req.variables['APPWRITE_FUNCTION_API_KEY'] == null) {
print(
"Environment variables are not set. Function cannot use Appwrite SDK.");
} else {
client
.setEndpoint(req.variables['APPWRITE_FUNCTION_ENDPOINT'])
.setProject(req.variables['APPWRITE_FUNCTION_PROJECT_ID'])
.setKey(req.variables['APPWRITE_FUNCTION_API_KEY'])
.setSelfSigned(status: true);
}
final String appUserId = req.variables["APPWRITE_FUNCTION_USER_ID"];
bool resultCode = true;
String message = "ok";
bool? adverOk;
late CarObject car;
try {
car = CarObject.fromJson(jsonDecode(req.payload));
print(car.carCategoryId);
} catch (e) {
print(e.toString());
}
car.advertiserId = appUserId;
isAdvertiserExists(userId: appUserId, db: database).then((res) {
if (res != null) {
adverOk = true;
} else {
adverOk = false;
}
});
res.json({
"code": resultCode,
"message": message,
"attr": adverOk,
});
}
In this function i am receiving data from user then define model for that data, then trying to find the document that has user id as attribute.
You have to await the list documents call
You should probably read into how futures work some more too to get a better understanding of how they work
In short, the res.json() is called and your function returns before any of the thens get executed
Recommended threads
- Using Binary Log with Appwrite
If I can remember correctly appwrite uses mariaDB as the underlying database. If so could I use mariaDB’s binary log to see database operations from appwrite?
- Issue with OAuth 2.0 authentication
Good evening, I’m reaching out because I’m having a small issue with Appwrite. I’m trying to set up OAuth2 with Twitch, and even though I’m entering the correc...
- What's the proper way to delete user acc...
I would like to provide an option for the users of my app, to completely remove theirs account if they want to. I don't want to 'deactivate' the account, but to...