Hi , I keep getting “databases.upsertDocuments” or “createDocuments” function is not a valid appwrite function error . Following is a simple node.js code (modified for bug reporting purpose) Could you please investigate and let me know the root cause ? Thanks .
Execution id : 687e990ea3b4f735382a
import { Client, Databases, ID } from 'node-appwrite';
export default async ({ req, res, log, error }) => { let payload; try { payload = typeof req.body === 'string' ? JSON.parse(req.body) : req.body; } catch (err) { return res.json({ success: false, error: 'Invalid JSON', data: null }, 400); }
const { ast_id, room_id, type, score } = payload || {};
if (!ast_id || !room_id || !type || !score ) { return res.json( { success: false, error: 'Missing required parameters: ast_id, room_id, type, score, data: null }, 400 ); }
log(submit-prediction: ${JSON.stringify({ ast_id, room_id, type })});
const client = new Client() .setEndpoint(process.env.APPWRITE_ENDPOINT) .setProject( process.env.APPWRITE_FUNCTION_PROJECT_ID || process.env.APPWRITE_PROJECT_ID ) .setKey(req.headers['x-appwrite-key'] ?? ''); const databases = new Databases(client); const dbId = process.env.APPWRITE_DATABASE_ID;
try {
log(`Using score from payload: ${score}`);
const currentDate = new Date().toISOString().split('T')[0];
const documentId = `pred_${ast_id}_${room_id}_${type}_${currentDate}`
.replace(/[^a-zA-Z0-9_-]/g, '_')
const predictionDoc = await databases.upsertDocuments(
dbId,
'predictions',
[{
$id: documentId,
ast_id,
room_id,
type,
score
}]
);
So this is a type error you're getting in your ide?
What version of the package are you using?
{ "name": "submit-prediction", "version": "1.0.0", "description": "StarChat prediction submission function", "main": "src/main.js", "type": "module", "dependencies": { "node-appwrite": "^13.0.0" } }
Do we need any specific node version for this to work ?, in the function settings in appwrite console , I have the run time as Node 18.0
That error is not from IDE , that was from Appwrite function logs .
Can you provide the log and stack trace
node-appwrite@13 is pretty old, you'll want node-appwrite@17.1.0
that's probably your issue
upsert is new and wouldn't be available on an sdk from a year ago
Recommended threads
- Any way to temporarily bypass the email ...
Hey guys, any way to bypass the email verification to use the accounts again? i need to recover some projects that due to recent changes have been stopped, and ...
- Create a new paid tier
Current pricing seems reasonable enough about what is someone getting for 25$. But for some people most of these resouces are getting wasted. Like the bandwidt...
- [Bug] Appwrite Auth User Prefs
User prefs are decoded as blank although there are plenty of data and add preference button not working in this case