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

Bagaimana cara menulis function-y menerima parameter-fct_x yang mengakses var-a yang harus didefinisikan dalam function-y?

Jika saya memahami pertanyaan Anda dengan benar, Anda mencari pelingkupan dinamis . Javascript tercakup secara leksikal, jadi untuk menangkap variabel, penutupan harus secara tekstual dalam cakupannya. Kalau tidak, ini tidak mungkin, tidak termasuk trik yang kurang lebih konyol seperti, misalnya:

function makeClosure(context) {
    return function() {
        return context("a") + 1;
    };
}

function y(evalThis) {
    var a = 2;

    if(evalThis)
        return eval(evalThis);

    return makeClosure(y);
}

closure = y();
document.write(closure()) // 3

Lihat juga Apakah mungkin untuk mencapai pelingkupan dinamis dalam JavaScript tanpa menggunakan eval? untuk diskusi dan contoh lebih lanjut.

Mengenai pertanyaan MongoDB Anda secara khusus, tidak mungkin dalam javascript murni untuk menyuntikkan variabel ke dalam ruang lingkup beberapa fungsi (sekali lagi, tanpa menggunakan eval). Tetapi pengurangan peta Mongo ditulis dalam C++, bukan dalam JS, dan dapat memanipulasi ruang lingkup dengan cara yang sewenang-wenang:

_scope->setFunction("emit", etc

Lihat sumber .

Untuk kelengkapan, berikut adalah contoh dengan eval :

function map(ary, fun) {

    // define some locals
    var LOCAL = 42;

    // re-evaluate the function within the scope
    eval("fun=" + fun);

    // now fun sees our locals
    return ary.map(fun);
}

document.write(
    map([1,2,3], function(x) { return x * LOCAL }) // [ 42, 84, 126 ]
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mendapatkan pengecualian saat melakukan block() pada objek Mono yang saya dapatkan kembali dari objek ReactiveMongoRepository

  2. Apakah buruk mengubah tipe _id di MongoDB menjadi integer?

  3. Mongo di testcontainers

  4. Status Anggota Replika MongoDB adalah LAINNYA

  5. Perlu hitungan berbeda pada beberapa bidang yang digabungkan dari koleksi lain menggunakan kueri agregasi mongodb