2017-05-17 4 views
0

Also im Grunde erstellen ich eine Inventar-Management-App und möchte den aktualisierten Datensatz für den Benutzer in dem Sinne nicht nur das Feld, das aktualisiert wurde, sondern das gesamte Dokument selbst zeigen. Meine Frage istIst es möglich, den gesamten aktualisierten Datensatz anstelle des aktualisierten Felds anzuzeigen?

* Wie zeige ich dem Benutzer den gesamten aktualisierten Datensatz anstelle des aktualisierten Felds an? *

Ich benutze Briefträger, um diese API zu testen. Dies ist mein Code und diejenigen mit Kommentaren sind, was ich versucht habe.

var MongoClient = require('mongodb').MongoClient; 
var assert = require('assert'); 
var url = 'mongodb://localhost:27017/myproject'; 

module.exports = { 
/*getCollection : function(req, res){ 
    var issueQty = req.body.issueQty; 
    var itemDescrip = req.body.itemDescrip; 
    MongoClient.connect(url,function(err,db){ 
     assert.equal(null,err); 
     var doc = findMultiple(db,req,function() { 
      db.close(); 
     }); 
    }); 
     res.send(doc) 
}*/ 
postCollection : function(req, res){ 
    var issueQty = req.body.issueQty; 
    var itemDescrip = req.body.itemDescrip; 
MongoClient.connect(url, function(err, db) { 
    assert.equal(null, err); 
    updateRecord(db, req, function() { 
    db.close(); 
    }); 
    //findMultiple(db, req, function(){ 
    //db.close(); 
    //}); 
}); 
    res.send('Record Found. Now updating this document...' + itemDescrip + ' 
Record Updated. This is the new record with updated issueQty ' 
    + issueQty) 
} 
} 
var updateRecord = function(db, req, callback) { 
db.collection('documents').updateMany(
    { 'Item Description': req.body.itemDescrip}, 
    { 
    $set: { 'Issued QTY': req.body.issueQty } 
    } 
    , 
    function(err, results) { 
    console.log(results); 
    console.log('Done'); 
    callback(); 
}); 
}; 
/*var findMultiple = function(db, req, callback){ 
var issueQty = req.body.issueQty; 
var itemDescrip = req.body.itemDescrip; 
var cursor = db.collection('documents').find({'Issued QTY': issueQty, 'Item 
Description': itemDescrip}); 
cursor.each(function(err,doc){ 
    assert.equal(err,null); 
    if(doc != err){ 
     console.log('Successfully queried'); 
     console.log(doc); 
     return doc; 
    } else { 
     callback(); 
    } 

}); 
};*/ 

ich eine andere Funktion findMultiple setzen haben versucht, die Daten zu erhalten und die aktualisierten Datensatz in der Antwort zu zeigen, aber es hat nicht funktioniert und haben darüber nachgedacht, meine Frage api und das Update api zusammen verbindet, aber ich bin nicht sicher, wie man geh darüber. Jede Hilfe wird geschätzt, danke!

Antwort

0

Sie müssen:

  1. Innen updateRecord(), den Rückruf mit dem results Ziel der
  2. Innen postCollection()
  3. Update-Operation aufrufen, der Rückruf zu updateRecord() bestanden Zugang zum results Objekt haben


postCollection : function(req, res){ 
    var issueQty = req.body.issueQty; 
    var itemDescrip = req.body.itemDescrip; 
    MongoClient.connect(url, function(err, db) { 
    assert.equal(null, err); 
    updateRecord(db, req, function(results) { 
    res.send('Document...') //Do what you want with results here 
    db.close(); 
    }); 
}); 

var updateRecord = function(db, req, callback) { 
    db.collection('documents').updateMany(
    {'Item Description': req.body.itemDescrip}, 
    {$set: { 'Issued QTY': req.body.issueQty }}, 
    function(err, results) { 
     console.log(results); 
     console.log('Done'); 
     callback(results); //pass results to the callback 
    }); 
}; 
Verwandte Themen