Domino e Node.js: aggiungere e modificare documenti

Recentemente abbiamo scritto in questo blog una serie di post sull’integrazione fra Domino e node.js . (alla fine del post trovate i link agli articoli predenti)

Quello che ancora mancava per chiudere il cerchio è la parte di creazione e modifica dei documenti Notes da parte di node.js.

In realtà per entrambi i casi la teoria è abbastanza semplice e non presenta particolari difficoltà, partiamo da primo caso.

 

Creare i documenti in Domino partendo da node.js

Se avete già letto e sperimentato quanto riportato nei post precedenti avete visto come creare la connessione ad un database Domino partendo da node.js ed accedervi in modalità anonima o certificata.

Basandosi quindi sulla connessione già creata con questo codice

const LogdatabaseConfig = {
"filePath": "node/log.nsf"
};

possiamo scrivere una funzione che accetta 3 parametri in input (saranno il contenuto di 3 campi in Notes)  e mi crea un documento.

function scrivi(id,ml,req) {
useServer(serverConfig).then(async server => {
const Ldatabase = await server.useDatabase(LogdatabaseConfig);
try {
const unid = await Ldatabase.createDocument({
document: {
Form: 'record',
campo1 : id ,
campo2 : ml,
campo2 : req.connection.remoteAddress,
},
});
} catch (e) {
console.log("Function scrivi : ", e);
throw e;
}
});
}

Come potete vedere prima uso server.useDatabase per connettermi all’ nsf che voglio usare e poi con .createDocument creo il documento vero e proprio passando i valori che ho avuto in input e scrivendoli nei campi 1 , 2 e 3 all’interno del documento Notes.

 

Modificare documenti Notes esistenti da node.js

Qui il discorso è ovviamente diverso in quanto devo prima reperire il documento che voglio modificare e poi scrivere le informazioni nei campi.

Quindi mi serve prima eseguire una query per reperire il documento :

function modifica(codice,req) {
useServer(serverConfig).then(async server => {
const hostName = await server.getHostName();
const MailerDb = await server.useDatabase(MDbConfig);
var query = "Form = 'Contact' and contactCode = '" + codice +"'";
try {
const response = await MDb.bulkReplaceItems({
query: query,
replaceItems: {
Stato: 'Modificato',
} ,
});
} catch (e) {
console.log("Function modifica : ", e);
throw e;
}
});
}

Quindi la mia funzione accetta in entrata una stringa ‘codice’ che viene poi usata per costruire la query dove ho una parte fissa ( Form = ‘Contact’ ) e poi la ricerca del codice vero e proprio.

Di seguito utilizzando bulkReplaceItems cambio il valore del campo ‘Stato’ scrivendo la stringa ‘Modificato’ per tutti i record risultanti dalla query.

 

Come forse avrete notato , a differenza di quanto accade per esempio in LotusScript, per entrambi i casi non esiste il Save del documento creato o modificato: è già implicito.

 

Questo post (così come i precedenti) non è solo teoria: abbiamo già usato node.js per modificare una nostra applicazione, aggiungendo nuove funzionalità: potete trovarne qui i dettagli .

 

Se invece vi siete persi gli articoli precedenti su node.js e Domino ecco i link: