Cố gắng tìm ID duy nhất trong Node.js và MongoDB, bằng cách tạo vòng lặp while truy vấn MongoDB cho các ID hiện có, cho đến khi tìm thấy một giá trị duy nhất. Nếu ID đã được sử dụng, một số được tăng lên ở cuối cho đến khi Mongo không trả về gì cả.Tuyên bố ngắt không hợp lệ (Node.js)
Mọi thứ đang hoạt động, ngoại trừ câu hỏi break;
khi tìm thấy ID duy nhất. lợi nhuận Node.js: SyntaxError: Illegal break statement
Mã:
db.collection('landmarks').findOne({'id':uniqueIDer}, function(err, data){
//if ID exists already
if (data.id){
var uniqueNumber = 1;
while (1) {
var uniqueNum_string = uniqueNumber.toString();
var newUnique = data.id + uniqueNum_string;
db.collection('landmarks').findOne({'id':newUnique}, function(err, data){
if (data.id){
uniqueNumber++;
}
else {
saveLandmark(newUnique);
break;
}
});
}
}
else {
saveLandmark(uniqueIDer);
}
});
Tôi đang làm gì sai?
EDIT:
Đây là cố định lên mã sử dụng async nếu có ai cần nó :)
db.collection('landmarks').findOne({'id':uniqueIDer}, function(err, data){
if (data){
var uniqueNumber = 1;
var newUnique;
async.forever(function (next) {
var uniqueNum_string = uniqueNumber.toString();
newUnique = data.id + uniqueNum_string;
db.collection('landmarks').findOne({'id':newUnique,'world':worldVal}, function(err, data){
if (data){
console.log('entry found!');
uniqueNumber++;
next();
}
else {
console.log('entry not found!');
next('unique!'); // This is where the looping is stopped
}
});
},
function() {
saveLandmark(newUnique);
});
}
else {
saveLandmark(uniqueIDer);
}
});
Lưu ý phụ: khi bạn đã sửa lỗi cú pháp, bạn sẽ có một ứng dụng bị khóa. Bạn không thể sử dụng đồng bộ 'while (1)' với '.findOne()' không đồng bộ. Sau này yêu cầu động cơ được nhàn rỗi để kết thúc, mà trước đây không bao giờ cho phép nó được. –
Cách tốt nhất để tìm ID duy nhất là gì? – alyx
@jrbaldwinn: Khá chắc chắn rằng mọi đối tượng trong một bộ sưu tập đều có một id duy nhất được gán tự động khi bạn thêm nó. ID đối tượng là kinda lớn và xấu xí, nhưng cơ hội của nó được nhân đôi, ngay cả trong một cụm hoặc bất cứ điều gì, là một nơi nào đó giữa mỏng và không có. :) – cHao