簡體   English   中英

如何向貓鼬模式添加新密鑰?

[英]How do I add new keys to a Mongoose Schema?

我最近開始為我的高級項目開發一個應用程序,該應用程序要求我使用某種類型的數據庫。 為此,我決定使用Mongoose,因為它是noSQL且較容易上手。

因此,快進,我遇到了一個問題,我無法弄清楚如何編輯一個已經存在的Schema並向其中添加新的鍵。

例如,我有一個表示代表以下內容的帖子(如Tweets或Facebook帖子):

  • 包含帖子正文的字符串
  • 創建帖子的用戶的ID
  • 帖子創建的日期

我的代碼是:

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

// Create Schema
const PostsSchema = new Schema({
  Value: {
    type: String,
    required: true
  },
  User: {
    type: Schema.Types.ObjectId,
    ref:'users'
  },
  Date: {
    type: Date,
    default: Date.now
  }
});

// Create collection and add schema
mongoose.model('posts', PostsSchema, 'posts');

我現在想要的是以某種方式訪問​​該架構,並使用類似於

PostsSchema.add({Private: { default: false}});

這意味着,現在數據庫中的架構將類似於:

{
    "_id": {
        "$oid": "1831g98af21n9s5u7s9ccchj5"
    },
    "Value": "Beautiful day outside, can't wait to go jogging!",
    "User": {
        "$oid": "9a79ab143lbk9lk55wq327oi3226m"
    },
    "Date": {
        "$date": "2018-10-29T01:28:44.408Z"
    },
    "Private":  "false"
    "__v": 0
}

回到我的問題,有沒有辦法做到這一點? 或者,如果您有這些方法的文檔鏈接,我將不勝感激。 非常感謝!

只需使用default將該字段添加到架構中即可:

const PostsSchema = new Schema({
  Value: {
    type: String,
    required: true
  },
  User: {
    type: Schema.Types.ObjectId,
    ref:'users'
  },
  Date: {
    type: Date,
    default: Date.now
  },
  Private: {type: Boolean, default: 'false'}
});

由於您具有default因此在添加private字段之前,任何新記錄都會保存該舊記錄,並且還會保存舊模型的任何新實例

如果您確實需要更多dynamic方法,通常的建議是將混合類型與所有附帶的優點和缺點一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM