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

Mongoose thêm nhiều mục vào cơ sở dữ liệu

Vấn đề ở đây là trong findOne gọi lại - beerId của bạn sẽ luôn được đặt thành bia cuối cùng trong beerObjects , bởi vì vòng lặp kết thúc trước khi bạn nhận được lệnh gọi lại đầu tiên của mình - chào mừng bạn đến với javascript không đồng bộ.

Một biện pháp khắc phục điều này là bọc findOne của bạn mã trong IFFE (Biểu thức hàm được gọi ngay lập tức). Mã này sẽ hoàn thành trước khi chuyển sang loại bia tiếp theo từ beerObject.

Đây là một số thông tin khác về IFFE

Stack Overflow trên IFFE

Tôi đã xem nhanh mã, tôi tin rằng điều này sẽ hoạt động, nhưng bạn có thể phải thực hiện một số điều chỉnh với mã nội bộ ...

for(var i = 0; i < beerObjects.length; i++) {
    console.log(beerObjects[i].beerId);
    //var currentBeer = beerObjects[i]; dont need this now
    (function (currentBeer) {
        Beer.findOne({ beerId: currentBeer},
            function(err, beer) {
                if(!err && !beer) {
                    var newBeer  = new Beer();
                    newBeer.beerId = currentBeer.beerId;
                    newBeer.name = currentBeer.name;
                    newBeer.description = currentBeer.description;
                    newBeer.abv = currentBeer.abv;
                    newBeer.image = currentBeer.image;
                    newBeer.save(function(err) {
                       // log your error here...
                    });
                } else if(!err) {
                    console.log("Beer is in the system");
                } else {
                    console.log("ERROR: " + err);
                }
            }
        );   
    })(beerObjects[i].beerId);
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. PyMongo Cập nhật tài liệu với nhiều bản ghi

  2. Tôi có thể đọc tệp csv bên trong tệp Javascript của Mongo Shell không?

  3. Mô hình tốt nhất để biểu diễn nhiều mối quan hệ với các thuộc tính trong MongoDB

  4. Mongodb node.js $ out với tổng hợp chỉ hoạt động nếu gọi toArray ()

  5. Cách khắc phục MongoError:Không thể sử dụng phiên đã kết thúc