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

node.js - Mongoose chèn nhiều vào một

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 00:55:40 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi cần trợ giúp! Tôi đang tạo một trang web để học cách sử dụng nodejs và mongo.

Tôi có một vấn đề và tôi biết cách tốt nhất để giải quyết nó. Tôi có hai bộ sưu tập nhãn Đến bàn tôi có thẻ Các lĩnh vực là mảng thẻ.

Mô hình mã:

var CodeSchema = Lược đồ mới({
tiêu đề: { type: 'Chuỗi', bắt buộc: true },
văn bản: { type: 'Chuỗi', bắt buộc: true },
url: { type: 'Chuỗi', bắt buộc: true },
uri: Chuỗi,

đã tạoAt: { type: Ngày, mặc định: Date.now },
đã cập nhậtAt: { type: Date, mặc định: Date.now },

người sở hữu: {
loại: Schema.ObjectId,
giới thiệu: 'Người dùng'
},

thẻ: [
{
loại: Schema.ObjectId,
giới thiệu: 'Thẻ'
}
]

});

CodeSchema.pre("save", function (tiếp theo) {
// nếu tạo lần đầu
if (!this.created_at) {
this.created_at = Date.now();
}

Kế tiếp();
});

module.exports = mongoose.model('Code', CodeSchema);

và mô hình nhãn của tôi:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var TagSchema = Lược đồ mới({
tên: 'chuỗi'
});

module.exports = mongoose.model('Tag', TagSchema);

Khi tôi nhận được kết quả trong khi nghỉ ngơi, tôi nhận được điều này:

[
{
"_id": "5540f557bda6c4c5559ef638",
"người sở hữu": {
"_id": "5540bf62ebe5874a1b223166",
"mã thông báo": "7db8a4e1ba11d8dc04b199faddde6a250eb8a104a651823e7e4cc296a3768be6"
},
"uri": "kiểm tra-lưu",
"url": "http://www.google.com.br/",
"văn bản": "xin chào",
"title": "đang thử nghiệm...",
"__v": 0,
"thẻ": [
{
"_id": "55411700423d29c70c30a8f8",
"tên": "ĐI"
},
{
"_id": "55411723fe083218869a82d1",
"tên": "JAVA"
}
],
"updateAt": "2015-04-29T15:14:31.579Z",
"createdAt": "2015-04-29T15:14:31.579Z"
}
]

Tôi điền nó vào cơ sở dữ liệu và tôi không biết cách chèn nó, có cách nào để thực hiện việc này tự động bằng Mongoose hay tôi cần phải tự tạo nó? Tôi đang sử dụng json này để thử nghiệm:

{
"url": "http://www.google.com.br/",
"title": "Thử nghiệm nội dung",
"văn bản": "chèn mã",
"thẻ": [
"GÓC",
{
"_id": "55411700423d29c70c30a8f8",
"tên": "ĐI"
}
]
}

Dù có id hay không thì cũng cần chèn tag. Tôi có cần tạo không hay có cách nào tạo tự động không? Tôi nên làm gì?

Xin lỗi vì tiếng Anh của tôi =x

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

Nói chung, việc tạo và lưu tài liệu trong cơ sở dữ liệu mongo bằng mongooseJS khá đơn giản (giả sử bạn đã kết nối với cơ sở dữ liệu):

var localDocObj = SomeSchemaModel(OPTIONAL_OBJ); // localDocObj là một tài liệu cầy mangut
localDocObj.save(CALLBACK); // lưu tài liệu cầy mangut cục bộ vào mongo

Nếu bạn có một đối tượng ở cùng dạng lược đồ, bạn có thể chuyển nó tới hàm tạo để tạo đối tượng tài liệu mongoose với các thuộc tính của đối tượng. Nếu đối tượng không hợp lệ, bạn sẽ nhận được lỗi không hợp lệ được chuyển đến hàm gọi lại khi xác thực hoặc lưu.

Đưa ra đối tượng và lược đồ thử nghiệm của bạn:

var testObj = {
"url": "http://www.google.com.br/",
"title": "Thử nghiệm nội dung",
"văn bản": "chèn mã",
"thẻ": [
"GÓC",
{
"_id": "55411700423d29c70c30a8f8",
"tên": "ĐI"
}
]
};

var codeDoc = Code(testObj);
codeDoc.save(hàm (err, doc) {
console.log(err); // sẽ hiển thị lỗi vô hiệu hóa cho thẻ 'Angular'
});

Vì bạn sẽ Tag Được lưu trữ dưới dạng một bộ sưu tập riêng biệt, vì vậy bạn cần lấy/tạo bất kỳ thẻ giá trị chuỗi nào trước khi chèn tài liệu mã mới. Sau đó, bạn có thể sử dụng tài liệu đánh dấu mới thay cho giá trị chuỗi của tài liệu mã. Điều này sẽ tạo một luồng không đồng bộ mà bạn có thể sử dụng Lời hứa (có sẵn trong các phiên bản Node mới hơn) để quản lý.

// Tạo một lời hứa cho tất cả các mục trong mảng thẻ để lặp lại
// và quyết tâm tạo một tài liệu Code mới
var lời hứa = Promise.all(testObj.tags.map(function(tag) {
if (thẻ typeof === 'đối tượng') {
// Giả sử nó đã tồn tại ở mongo rồi
thẻ trả lại;
}

// Xem thẻ đã tồn tại chưa
trả về Tag.findOne({
tên: thẻ
}).exec().then(function(doc) {
if (doc) { trả lại tài liệu }

// nếu không có thẻ nào tồn tại, hãy tạo một thẻ
trả về (Thẻ({
tên: thẻ
})).save(); // trả về một lời hứa
});
})).then(hàm(thẻ) {
// Tất cả các thẻ đã được kiểm tra và tìm nạp/tạo nếu không phải là một đối tượng
// Cập nhật mảng thẻ
testObj.tags = thẻ;

// Cuối cùng thêm tài liệu Code
var code = Code(testObj);
trả lại mã.save();
}).then(hàm(mã) {
// code là tài liệu mongo được trả về
console.log(mã);
}).catch(function(err) {
// lỗi ở một trong những lời hứa
console.log(err);
});

Về node.js - Mongoose chèn nhiều-một, 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/29969926/

hai mươi bốn 4 0
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