我有一個正在構建的應用程式,它允許用戶在網頁上輸入記錄。我想顯示提交每條記錄的日期/時間,我嘗試了幾種不同的方法,最后讓日期/時間以我想要的格式顯示,但似乎時間戳是在服務器時記錄的啟動而不是添加記錄時。我正在使用 moment.js 進行格式化
這是我的架構
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const moment = require("moment");
var d = new Date();
var formattedDate = moment(d).format("MM-DD-YYYY, h:mm:ss a");
let codeSchema = new Schema({
code: {
type: String
},
createdAt: {
type: String,
default: formattedDate
},
},
{
collection: "codes"
}
);
module.exports = mongoose.model("Code", codeSchema);
這是記錄的外觀,除了日期和時間是我啟動服務器的時間而不是實際添加檔案的時間
123456789789 12-09-2021, 12:59:33 pm
uj5u.com熱心網友回復:
有趣的問題。我在應用程式中使用貓鼬,但沒有看到這個問題。請參閱下面的架構:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const schema = new Schema({
createdBy: Object,
created: { type: Date, default: Date.now },
matchName: { type: String, required: true },
matchType: { type: String, required: true },
matchActive: { type: Boolean, default: false },
matchPrivate: { type: Boolean, default: true },
matchTime: { type: String, required: true },
matchDate: { type: String, requried: true },
matchPassword: String,
matchMembers: [],
course: Object,
subCourse: Object,
par: { type: Number, required: true },
numberOfHoles: { type: Number, required: true },
frontBackNine: { type: String, required: true, default: null },
completed: { type: Boolean, default: false },
compeletedOn: { type: Date },
winner: { type: String },
startingHole: { type: Number, default: 1 },
scorecardSettings: { type: String, required: true },
tournamentGroups: { type: Array, default: [] },
});
module.exports = mongoose.model("Matches", schema);
但是我沒有使用moment.js。
這里有兩個想法:
- 嘗試洗掉注釋 moment.js 代碼并使用:
Date.now
代替時刻格式化的日期。這只是為了看看 moment 是否導致了問題,并不會真正為您提供解決方案
- 您如何創建集合和檔案?您是在服務器啟動時還是在用戶上傳檔案時創建檔案?
uj5u.com熱心網友回復:
考慮何時評估和分配該變數;是在創建模式時,只會發生一次。在任何情況下,您都應該在保存記錄時分配該值,并將該值分配為任何其他值。
但是,moongose 已經可以選擇在創建和更新記錄時為記錄分配時間戳。在這里查看:https : //mongoosejs.com/docs/guide.html#timestamps
您的代碼應如下所示:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const codeSchema = new Schema({
code: {
type: String
},
createdAt: {
type: String,
default: formattedDate
},
},
{
collection: "codes",
timestamps: true
}
);
module.exports = mongoose.model("Code", codeSchema);
關于格式,我強調建議在使用資料的最后一點之后注意。
uj5u.com熱心網友回復:
您正在分配預定義的值,這就是它不起作用的原因,您應該創建一個函式并將該函式分配為默認值以獲取檔案時的值。
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const moment = require("moment");
var createdAt = function(){
var d = new Date();
var formattedDate = moment(d).format("MM-DD-YYYY, h:mm:ss a");
return formattedDate;
};
let codeSchema = new Schema({
code: {
type: String
},
createdAt: {
type: String,
default: createdAt
},
},
{
collection: "codes"
}
);
module.exports = mongoose.model("Code", codeSchema);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/378024.html
標籤:javascript MongoDB 表达 日期 猫鼬
下一篇:串列串列的Json路徑求和函式
