MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да форматирате данни в модел преди да ги запишете в Mongoose (ExpressJS)

Въпреки че не съм сигурен за значението на req.body.starttime , почти съм сигурен, че търсите обектите на схемата pre() функция, която е част от междинния софтуер на Mongoose и позволява дефинирането на функциите за обратно извикване да бъде изпълнено, преди данните да бъдат записани. Вероятно нещо подобно върши желаната работа:

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

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

Имайте предвид, че функцията за обратно извикване за save събитието се извиква всеки път, преди да бъде създаден или актуализиран запис. Така че това е например начинът за изрично задаване на "модифициран" времеви печат.

РЕДАКТИРАНЕ:

Благодарение на вашия коментар сега разбрах по-добре какво искате да постигнете. В случай, че искате да промените данните, преди да бъдат присвоени и запазени в записа, можете лесно да използвате set свойство на схемата:

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

Ако приемем, че обектът util е в обхвата (задължително или каквото и да е) текущата ви реализация отговаря на подписа за свойството set :

function set(val, schemaType)

Незадължителният параметър schemaType ви позволява да проверявате свойствата на дефиницията на полето на вашата схема, ако процесът на трансформиране зависи от него по някакъв начин.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb, обобщена заявка с $lookup

  2. pymongo:MongoClient или Connection

  3. Намерете в Double Nested Array MongoDB

  4. MongoDB:Актуализиране на документи с използване на данни от същия документ

  5. Как да разрешите ClassNotFoundException:com.mongodb.connection.BufferProvider?