MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách định dạng dữ liệu trong Model trước khi lưu trong Mongoose (ExpressJS)

Mặc dù tôi không chắc về ý nghĩa của req.body.starttime , Tôi khá chắc rằng bạn đang tìm kiếm các đối tượng Schema pre() là một phần của Mongoose Middleware và cho phép định nghĩa các hàm gọi lại được thực thi trước khi dữ liệu được lưu. Có thể một cái gì đó như thế này sẽ thực hiện công việc mong muốn:

var RunSchema = new Schema({
  [...]
  starttime: {
    type: Date,
    default: Date.now
  }
});

RunSchema.pre('save', function(next) {
  this.starttime = new Date();
  next();
});

Lưu ý rằng hàm gọi lại cho save sự kiện được gọi mỗi lần trước khi bản ghi được tạo hoặc cập nhật. Vì vậy, đây chẳng hạn là cách để đặt một cách rõ ràng dấu thời gian "đã sửa đổi".

CHỈNH SỬA:

Nhờ nhận xét của bạn, bây giờ tôi đã hiểu rõ hơn về những gì bạn muốn đạt được. Trong trường hợp bạn muốn sửa đổi dữ liệu trước khi nó được gán và lưu vào bản ghi, bạn có thể dễ dàng sử dụng set thuộc tính của Lược đồ:

// defining set within the schema
var RunSchema = new Schema({
  [...]
  starttime: {
    type: Date,
    default: Date.now,
    set: util.getDate
  }
});

Giả sử rằng đối tượng util nằm trong phạm vi (bắt buộc hoặc bất cứ điều gì) triển khai hiện tại của bạn phù hợp với chữ ký cho thuộc tính set :

function set(val, schemaType)

Tham số tùy chọn schemaType cho phép bạn kiểm tra các thuộc tính của định nghĩa trường lược đồ nếu quá trình biến đổi phụ thuộc vào nó theo bất kỳ cách nào.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Viết nhật ký MongoDB có đảm bảo độ bền không?

  2. Nhập tệp JSON vào MongoDB với mongoimport

  3. Băm mật khẩu Mongoose

  4. Làm cách nào để xóa phần tử mảng trong mongodb?

  5. MongoDB $ setUnion