MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để viết hàm-y chấp nhận tham số-fct_x truy cập vào var-a được yêu cầu xác định trong hàm-y?

Nếu tôi hiểu đúng câu hỏi của bạn, bạn đang tìm kiếm phạm vi động . Javascript có phạm vi từ vựng, vì vậy để nắm bắt một biến, bao đóng phải ở dạng văn bản trong phạm vi của nó. Nếu không, điều này là không thể, không tính nhiều hơn hoặc ít hơn các thủ thuật ngớ ngẩn như:

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

Xem thêm Có thể đạt được phạm vi động trong JavaScript mà không cần dùng đến eval không? để có thêm thảo luận và ví dụ.

Đối với câu hỏi MongoDB của bạn cụ thể, trong javascript thuần không thể đưa một biến vào phạm vi của một số hàm (một lần nữa, mà không cần dùng tới eval). Nhưng map-Reduce của Mongo được viết bằng C ++, không phải bằng JS và có thể thao tác phạm vi theo những cách tùy ý:

_scope->setFunction("emit", etc

Xem nguồn .

Để hoàn thiện, đây là một ví dụ với 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. Làm thế nào để chuyển đổi cấu trúc đối tượng JSON sang ký hiệu dấu chấm?

  2. Định cấu hình và sử dụng máy chủ mockup mongodb để kiểm tra đơn vị

  3. MongoDB findAndModify. Nó có thực sự là nguyên tử không? Giúp viết một giải pháp cập nhật đã đóng

  4. Tránh cảnh báo phân tích cú pháp chuỗi URL hiện tại không được dùng nữa bằng cách đặt useNewUrlParser thành true

  5. Làm thế nào để truy vấn mongodb với "like" bằng cách sử dụng java api?