[英]Saving an array (of 'tags') to MongoDB using Mongoose
我正在玩Mongoose而且我在保存到陣列時遇到了麻煩。 例如,我在頁面上有一個逗號分隔標簽的輸入字段。 我從req.body.tags中獲取這些內容,刪除空格,然后用逗號分隔它們以獲取標記數組。 現在,如何將此數組保存回我的數據庫? 我猜我已經錯誤地設置了這部分架構但是我不確定什么是對的,說實話。 我到目前為止的架構是:
var postSchema = mongoose.Schema({
title: String,
permalink: String,
content: String,
author: {
id: String,
name: String,
},
postDate: {
type: Date,
default: Date.now
},
});
如果我要保存標簽(例如,從帖子中),最好是有一個名為tags的數組,然后每個標簽都有一個名稱(和id?)? 如果是這樣,我會在架構中添加如下(如下)的內容嗎? 向帖子添加標簽的想法是我可以在帖子上顯示它們(作為鏈接),並且能夠在數據庫中搜索具有特定標簽的所有帖子。 這是正確的方法嗎?
tags: [{
name: String,
id: String
}]
發布到新的帖子路線時,我正在執行以下操作:
post = new Post(req.body);
tags = req.body.tags.replace(/\s/g,'').split(',');
// maybe post.tags = tags ?
post.save(function(err) {
if (!err) {
res.redirect('/posts');
} else {
...
}
});
這成功保存了提交的所有其他字段(標題,作者,內容等),但我不確定如何將新創建的標記保存回數據庫。 這里的任何建議都會非常受歡迎,因為我是新手,並熱衷於繼續學習。 謝謝!
如果你真的希望你的“標簽”數組有一個名稱字段和一個生成的_id
字段,那么定義另一個模式並嵌入它:
var tagSchema = mongoose.Schema({
name: String
});
var postSchema = mongoose.Schema({
title: String,
permalink: String,
content: String,
author: {
id: String,
name: String,
},
postDate: {
type: Date,
default: Date.now
},
tags: [tagSchema]
});
然后在創建Post
對象之前將輸入操作到正確的結構:
req.body.tags = req.body.tags.replace(/\s/''/g).split(",").map(function(tag) {
return { "name": tag };
});
var post = new Post(req.body);
或者只是將其保留為普通字符串數組:
var postSchema = mongoose.Schema({
title: String,
permalink: String,
content: String,
author: {
id: String,
name: String,
},
postDate: {
type: Date,
default: Date.now
},
tags: [String]
});
並且不用擔心映射對象屬性:
req.body.tags = req.body.tags.replace(/\s/''/g).split(",");
var post = new Post(req.body);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.