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

Làm cách nào để bạn truy cập các thuộc tính của một đối tượng được truy vấn từ Mongo trong Meteor

find phương thức trả về một con trỏ, không phải đối tượng hay mảng. Để truy cập đối tượng, bạn cần tìm nạp nó từ con trỏ

var skill = Skills.find(Session.get('selected_skill')).fetch()[0];

hoặc lấy trực tiếp bằng findOne :

var skill = Skills.findOne(Session.get('selected_skill'));

Sau đó, bạn có thể sử dụng nó giống như bất kỳ đối tượng js nào khác:

console.log(skill.mana);
skill._cache = {cooldown: true};

Hãy nhớ rằng ở phía máy khách, các phương pháp thu thập như find không bị chặn. Chúng trả về bất kỳ thứ gì Meteor có trong bộ nhớ cache, không nhất thiết là những gì có trong db phía máy chủ. Đó là lý do tại sao bạn nên luôn sử dụng chúng trong ngữ cảnh phản ứng hoặc đảm bảo rằng tất cả dữ liệu đã được tìm nạp trước khi thực thi (đừng lo lắng về điều sau cho đến khi bạn thành thạo với Meteor, hãy bắt đầu với cách đầu tiên).

Ngoài ra, bạn cần lưu ý rằng vì điều này, findOnefind.fetch có thể trả về null / mảng trống, ngay cả khi phần tử tương ứng nằm trong db (nhưng chưa được lưu vào bộ nhớ đệm). Nếu bạn không tính đến điều đó trong các chức năng phản ứng của mình, bạn sẽ gặp lỗi.

Template.article.slug = function() {
    var article = Articles.findOne(current_article);
    if(!article) return '';
    return slugify(article.title);
};

Nếu chúng ta không thoát khỏi hàm với if(!article) , biểu thức article.title sẽ phát sinh lỗi trong lần tính toán đầu tiên, như article sẽ là không xác định (giả sử nó không được lưu vào bộ nhớ cache trước đó).

Khi bạn muốn cập nhật cơ sở dữ liệu từ phía máy khách, bạn chỉ có thể thay đổi từng mục một và bạn phải tham khảo mục đó theo _id của nó . Điều này là do lý do bảo mật. Dòng của bạn cho điều này là ổn:

Skills.update(Session.get('selected_skill'), {$inc: {mana: 1}});

alert() là một hàm trả về không xác định cho dù bạn cho nó ăn gì.

alert(42); // -> undefined

Nói chung, nó xa tốt hơn nên gỡ lỗi bằng console.log hơn với alert .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cải thiện cấu trúc tổng hợp MongoDB

  2. Mongo DB:Truy vấn cho các tài liệu hiện đang hoạt động dựa trên ngày bắt đầu và ngày kết thúc

  3. Tổng hợp nhóm tuổi Mongo

  4. Mongoose cư trú phụ

  5. Cách phân tích mức sử dụng đĩa của vùng chứa Docker