MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

TypeError:callback.apply bukan fungsi (Node.js &Mongodb)

Ada 2 cara untuk mengupdate dokumen di mongodb:

  1. temukan dokumennya, bawa ke server, ubah, lalu simpan kembali ke mongodb.

  2. berikan instruksi ke mongodb untuk menemukan dokumen, ubah; lalu akhirnya setelah mongodb selesai, kembalikan hasil/kesalahan sebagai panggilan balik.

Dalam kode Anda, Anda mencampur kedua metode.

  1. dengan user.save(), pertama Anda mencari database dengan user.findOne, dan tarik ke server(nodejs), sekarang tinggal di memori komputer Anda.kemudian Anda dapat secara manual mengubah data dan akhirnya menyimpannya ke mongodb dengan pengguna. simpan()

    User.findOne({ userName: req.params.userName}, function(err, user) {
    
        if (err)
            res.send(err);
    
        //this user now lives in your memory, you can manually edit it
        user.username = "somename";
        user.competitorAnalysis.firstObservation = "somethingelse";
    
        // after you finish editing, you can save it to database or send it to client
         user.save(function(err) {
            if (err)
                return res.send(err);
    
            return res.json({ message: 'User updated!' });
        });
    
  2. yang kedua adalah menggunakan User.findOneAndUpdate().. Ini lebih disukai, daripada user.findOne() lalu user.update(); karena mereka pada dasarnya mencari database dua kali. pertama ke findOne(), dan cari lagi ke update()

Bagaimanapun, metode kedua memberitahu mongodb untuk memperbarui data tanpa terlebih dahulu membawa ke server, Selanjutnya, hanya setelah mongodb selesai dengan tindakannya, Anda akan menerima file yang diperbarui (atau kesalahan) sebagai panggilan balik

User.findOneAndUpdate({ userName: req.params.userName}, 
            {
             $set: { "competitorAnalysis.firstObservation" : req.body.firstObservation,
                      "competitorAnalysis.secondObservation" : req.body.secondObservation,
                      "competitorAnalysis.thirdObservation" : req.body.thirdObservation,
                      "competitorAnalysis.brandName" : req.body.brandName,
                      "competitorAnalysis.productCategory" : req.body.productCategory
            } },
            { upsert: true },
        function(err, user) {
        //after mongodb is done updating, you are receiving the updated file as callback    

        // now you can send the error or updated file to client
        if (err)
            res.send(err);

        return res.json({ message: 'User updated!' });
        });


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. bagaimana cara mengunggah gambar ke folder menggunakan nodejs dan menyimpan path ke mongodb?

  2. Panduan untuk Memasang di MongoDB

  3. MongoDB - Buat Hubungan

  4. Bagaimana cara mengonversi properti di MongoDB dari teks ke tipe tanggal?

  5. MongoDB untuk membantu dengan rekomendasi