salve, magari è uno sparo nel buio postare qui, ma per caso qualcuno scrive roba in node.js qui dentro (MEAN platform)?
Ho un problema che mi porto avanti da 3 giorni..
Se ricevo un ack espongo
Inviato 03 febbraio 2016 - 19:34
salve, magari è uno sparo nel buio postare qui, ma per caso qualcuno scrive roba in node.js qui dentro (MEAN platform)?
Ho un problema che mi porto avanti da 3 giorni..
Se ricevo un ack espongo
Non c'è più l'entropia di una volta
Inviato 03 febbraio 2016 - 20:21
Un giorno ho visto per strada un tizio barcollante , sporco, pieno di chiazze verdi e pus, infastidiva bambine e rubava i soldi alle vecchiette: era uno che postava nel DS.
ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้
Inviato 04 febbraio 2016 - 01:14
vabbè scrivo nella speranza che qualcuno passi di qui.
Uso nodejs+express+mongoose+mongodb
Per la sincronizzazione sto tentando col modulo async
Quello che devo fare detto semplicemente:
ho 2 collezioni, "users" e "posts". Questi gli schemi di mongoose:
var com_user_schema = new Schema({ name: { type: String, required: true }, age: {type:Number, required:true} }); var com_user= mongoose.model('com_user', com_user_schema); var com_post_schema = new Schema({ content: { type: String, required: true }, postedBy: [{ type: mongoose.Schema.Types.ObjectId, ref: 'com_user' }] }); var com_post= mongoose.model('com_post', com_post_schema);
Quindi un post può avere più di un autore.
Questa è una richiesta json d'esempio
{ "content": "testpost", "users": "john, alice", "postedBy": [{ "_id": "56af765961e2949410d95663", "name": "john", "age": 200, "__v": 0, "value": "john", "label": "john" }, { "value": "alice", "label": "alice" }] }
Questa la route interessata
app.post('/api/community/posts', function(req,res){ async.waterfall([ function(callback) { req.body.postedBy.forEach(function(el){ com_user.findById(el._id,function(err,user){ if(user){ arr.push(el._id); console.log('user found!') } else{ newusers.push(el.label) } }); }); callback(null); }, function(newusers, arr, callback) { newusers.forEach(function(el){ var com_user1 = new com_user({ name: el.label, age: 20 }); com_user1.save(function (err, newuser) { if (err) console.log(err) else { console.log('User not found and just added!'); console.log(newuser) arr.push(mongoose.Types.ObjectId(newuser._id)); } }); }); callback(null); } ], function(error) { console.log('finish!'); console.log(arr); //dovrei salvare il post qui res.json({"finish! ":1}); }); });
IL PROBLEMA:
in console vedo prima "finish!" e poi "user found" e "user not found", così l'array "arr" che dovrebbe contenere gli id degli utenti è vuoto.
dico solo
Non c'è più l'entropia di una volta
Inviato 04 febbraio 2016 - 10:41
javashit
Il sole è giallo
Brava Giovanna, brava
E canto please don't let me be misunderstood mentre parcheggio nel parcheggio l'alfasud
Inviato 04 febbraio 2016 - 19:39
javashit
FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
Mai più giorni felici
Inviato 04 febbraio 2016 - 19:44
scusa ma chiami la callback passando solo null
FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
Mai più giorni felici
Inviato 04 febbraio 2016 - 19:45
se è quello e l'ho visto io che
ho solo lurkato 30 sec qui https://www.npmjs.co...async-waterfall, non l'avevo mai vista
mai scritto niente in node js
sono anche high as fuck ora
sei proprio scarso
Messaggio modificato da toyo il 04 febbraio 2016 - 19:46
FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
Mai più giorni felici
Inviato 04 febbraio 2016 - 20:03
app.post('/api/community/posts', function(req,res){ async.waterfall([ function(callback) { req.body.postedBy.forEach(function(el){ com_user.findById(el._id,function(err,user){ if(user){ arr.push(el._id); console.log('user found!') } else{ newusers.push(el.label) } }); }); callback(null, newusers, arr); }, function(newusers, arr, callback) { newusers.forEach(function(el){ var com_user1 = new com_user({ name: el.label, age: 20 }); com_user1.save(function (err, newuser) { if (err) console.log(err) else { console.log('User not found and just added!'); console.log(newuser) arr.push(mongoose.Types.ObjectId(newuser._id)); } }); }); callback(null); } ], function(error) { console.log('finish!'); console.log(arr); //dovrei salvare il post qui res.json({"finish! ":1}); }); });
così nella mia testa
FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
Mai più giorni felici
Inviato 04 febbraio 2016 - 20:04
ma che poi sti arr e newusers da dove arrivano
comunque bocciatissimo per il nome delle variabili
FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
Mai più giorni felici
Inviato 04 febbraio 2016 - 20:31
ma che poi sti arr e newusers da dove arrivano
comunque bocciatissimo per il nome delle variabili
su questo hai ragione, nel semplificare il codice ho dimenticato
var arr=[], newusers=[]
ma perdonami col tuo codice mi fai capire che non hai capito una minghia del problema.
Che sia newbie di node ci siamo, sono 4 giorni che lo studio.
Se hai riferimenti che chiariscono il cazzo di control flow di node e l'event loop posta pure.
Non c'è più l'entropia di una volta
Inviato 04 febbraio 2016 - 20:35
provo con ordine poi magari non ho capito un cazzo
- arr e newusers in che scope sono definite?
- se sono in uno scope esterno a quelle funzioni, perché li dichiari come parametri della seconda funzione?
FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
Mai più giorni felici
Inviato 04 febbraio 2016 - 20:36
ma non sono in uno scope esterno dai, li dichiarerai nella prima e poi li passi
o no
FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
Mai più giorni felici
Inviato 04 febbraio 2016 - 20:44
ma non sono in uno scope esterno dai, li dichiarerai nella prima e poi li passi
o no
si ma non è quello il cazzo di problema, il problema è nelle callback che ho usato a cazzo e quindi continuo l'esecuzione della waterfall quando non dovrei (arrivo al 3o step prima di salvare nuovi utenti nel db).
Comunque il codice funzionante è questo, ma non è che abbia capito del tutto il perché di queste callback messe così. Se hai guide posta pure.
app.post('/api/community/posts', function(req,res){ var arr=[]; async.forEachOf(req.body.postedBy, function (user, key, callback) { findOrAdd(user, function(err, author) { arr.push(author._id); //perché callback qui? callback(); }); }, function (err) { if (err) console.error(err.message); console.log(arr) var com_post1= new com_post({ content:req.body.content, postedBy:arr, }); com_post1.save(function(err){ if(!err) res.json({"New post added! ":req.body.content}); else { res.json({"Error adding post":'error'}); error(err) } }); });
function findOrAdd(userToFind,callback){ var newuser=null; var user=null; async.series([ function(callback){ com_user.findOne({_id: userToFind._id}, function(err,obj) { if(obj) { user=obj callback(null, obj); } else { newuser=userToFind.label callback(null); } }); }, function(callback){ if(newuser){ var com_user1 = new com_user({ name: newuser, age: 20 }); com_user1.save(function (err, n) { if (err) console.log(err); else { user=n; callback(null); } }); } else callback(null); } ], function(err, results){ callback(null,user) }); }
provo con ordine poi magari non ho capito un cazzo
- arr e newusers in che scope sono definite?- se sono in uno scope esterno a quelle funzioni, perché li dichiari come parametri della seconda funzione?
hai ragione quei cavolo di parametri ti hanno completamente dirottato
facevano parte di un tentativo precedente di portarmi le variabili in giro nella waterfall.
Per riassumere il thread il più brevemente possibile: il cazzo di i/o asincrono di node mi ha rotto le palle 3 giorni.
Messaggio modificato da thewebsurfer il 04 febbraio 2016 - 20:57
Non c'è più l'entropia di una volta
Inviato 04 febbraio 2016 - 21:31
ah k capito
FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
Mai più giorni felici
Inviato 04 febbraio 2016 - 21:52
iterator(item, key, callback) - A function to apply to each item in obj. The key is the item's key, or index in the case of an array. The iterator is passed a callback(err) which must be called once it has completed. If no error has occurred, the callback should be run without arguments or with an explicit null argument.
FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
Mai più giorni felici