Node.JSでmongooseを使用してデフォルトの日付と時刻を保存しようとしていますが、どういうわけか、データベースに異なるタイムゾーン値を保存しています。「MongoDBAtlasDatabase」をDBサーバーとして使用しており、これを参照してデフォルトのタイムゾーンも構成しています。タイムゾーンの変更にもこれを試し、「moment-timezone.js」も試しましたが、うまくいきませんでした。
デフォルトの日付と時刻をインドの標準時間形式で保存したいだけです。
以下は、スキーマの私のコードです。
const testSchema = new mongoose.Schema({
from: String,
to: String,
amount: Number,
message: {
type: String,
default: ""
},
creationdate: {
type: Date,
default: Date.now
}
});
この問題について私を助けてください。この問題を解決するための最良の方法を教えてください。
MongoDBは、64ビット整数(JSでは53ビット)であるUnixエポック以降のミリ秒単位のUTCタイムスタンプとしてDate
フィールドを格納します。これもそうDate.now()
です。設計上、データにタイムゾーンコンポーネントはありません。
Dateオブジェクトに一貫した形式が必要な場合は、日付から必要なタイムゾーンで調整された文字列またはオブジェクトに戻る仮想フィールドを追加します。
const testSchema = new mongoose.Schema({
creationdate: {
type: Date,
default: Date.now
}
});
testSchema.virtual('formattedCreationDate').get(function() {
return this.creationdate.toLocaleString(); // or day.js/moment.js
});
システムのタイムゾーンに依存するか、設定するか、仮想ゲッターでタイムゾーンを検索します。ドキュメントごとにカスタムタイムゾーンが必要な場合は、それを別のフィールドに保存し、virtual
フォーマットで考慮してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加