cuốn sách gpt4 ai đã làm

android — bài viết mongodb.length không được xác định

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 01:08:59 27 4
mua khóa gpt4 Nike

Tôi đang xây dựng một blog nodejs, express, mongodb bằng ngọc bích.

Cấu trúc thư mục của tôi là: dự án/mô-đun/lượt xem/index.jade-application.js bài viết-provider-memory.js bài viết-provider-mongodb.js

Khi tôi chạy Node app.js thông qua bảng điều khiển và truy cập cổng localhost, tôi nhận được TypeError:

Không thể đọc thuộc tính 'độ dài' không xác định tại Jade.debug.unshift.lineno...

trong trình duyệt. Có lẽ đề cập đến các chức năng ẩn danh.

Đây là Articleprovider-memory.js

ArticleProvider.prototype.save = function(bài viết, gọi lại) {
bài viết var = null;

if( typeof(articles.length)=="không xác định")
bài viết = [bài viết];

for( var i =0;i< Articles.length;i++ ) {
bài viết = bài viết[i];
bài viết._id = bài viếtCounter++;
bài viết.created_at = Ngày mới();

this.dummyData[this.dummyData.length]= bài viết;
}
gọi lại(null, bài viết);
};

/* Cho phép khởi động bằng dữ liệu giả */
ArticleProvider mới().save([
{title: 'Post one', body: 'Body one', comments:[{author:'Bob', comment:'I love it'}, {author:'Dave', comment:'Thật rác rưởi!'} ]},
{title: 'Bài hai', nội dung: 'Nội dung hai'},
{title: 'Bài ba', nội dung: 'Nội dung ba'}
], hàm(lỗi, bài viết){});

xuất khẩu.ArticleProvider = ArticleProvider;

Bài viết nhà cung cấp-mongodb.js

ArticleProvider = function(host, port) {
this.db= Db mới('node-mongo-blog', Máy chủ mới(máy chủ, cổng, {auto_reconnect: true}, {}));
this.db.open(function(){});
};

ArticleProvider.prototype.save = function(bài viết, gọi lại) {
this.getCollection(function(error, Article_collection) {
if( error ) gọi lại(error)
khác {
if( typeof(articles.length)=="không xác định")
bài viết = [bài viết];

for( var i =0;i< Articles.length;i++ ) {
bài viết = bài viết[i];
bài viết.created_at = Ngày mới();
}

Article_collection.insert(bài viết, hàm() {
gọi lại(null, bài viết);
});
}
});
};

xuất khẩu.ArticleProvider = ArticleProvider;

Đây là tuyến đường của tôi:

var ArticleProvider = new ArticleProvider('localhost', 27017);

app.get('/', function(req, res){
ArticleProvider.findAll(hàm(lỗi,tài liệu){
res.render('index.jade', {title: 'Blog', Articles:docs});
})
res.render('index.jade')
});

Sau đó là file index.jade

// mở rộng bố cục

chặn nội dung
h1= tiêu đề
#bài viết
- mỗi bài viết trong bài viết
div.bài viết
div.created_at=bài viết.created_at
div.title
a(href="/blog/"+article._id.toHexString())!= Article.title
div.body=bài viết.body

Tôi đã đọc rất nhiều về tất cả các phần phụ thuộc nhưng vẫn chưa quen với chúng. Theo như tôi biết thì đây có thể là vấn đề, nếu tôi đúng, vui lòng cho tôi biết cách khắc phục chi tiết.

  1. Mã index.jade của tôi không chính xác

  2. index.jade đề cập đến một mảng, nhưng đối tượng bài viết của tôi không phải là một mảng

  3. mongodb không thiết lập kết nối chính xác với ứng dụng

  4. Mình cần dùng tu sĩ nhưng lại không có

Một số mã của tôi đến từ bài viết này http://howtonode.org/express-mongodb

cảm ơn bạn trước

câu trả lời hay nhất

1. Sửa các tuyến tốc hành

Bạn có nhiều tuyến đường kết xuất gọi. nên sửa đổi thành.

app.get('/', function(req, res){    
ArticleProvider.findAll(hàm(lỗi,tài liệu){
res.render('index.jade', {title: 'Blog', Articles:docs});
})
});

2. Kiểm tra trước khi lặpbài viếtLiệu nó có được xác định trong Jade View hay không

Trước khi lặp lại mảng bài viết, hãy đảm bảo rằng nó được xác định trong Jade View.

chặn nội dung
h1= tiêu đề
#bài viết
- if(typeof(article) !== 'không xác định')
- mỗi bài viết trong bài viết
div.bài viết
div.created_at=bài viết.created_at
div.title
a(href="/blog/"+article._id.toHexString())!= Article.title
div.body=bài viết.body

3. Xử lý các tham số sai trong truy vấn mongo

Bạn cũng xem xét có sẵnerror biến. Bằng cách này, nếu có lỗi xảy ra trong khi truy vấn mongo, nó có thể được xử lý. giống

app.get('/', function(req, res){    
ArticleProvider.findAll(hàm(lỗi,tài liệu){

if(error) {
console.log("lỗi mongo db"+lỗi);
tài liệu = [];
}

res.render('index.jade', {title: 'Blog', Articles:docs});

})
});

Về bài viết javascript - mongodb không xác định được độ dài, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/19876435/

27 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress