Mongoose: доступ к пользовательской хранимой функции в схеме - PullRequest
0 голосов
/ 28 июня 2018

Я создал пользовательскую функцию JavaScript в mongodb.

db.system.js.save(
{
  _id : "generateSRID" ,
  value : function (zone_id, length){ var randomNum = (Math.pow(10,length).toString().slice(length-1) + Math.floor((Math.random()*Math.pow(10,length))+1).toString()).slice(-length); return 'SR'+zone_id+'-' + randomNum; }
}); 

У меня есть схема мангуста,

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

const schema = new Schema({
    type: {type: String, required: true},
    service: {type: String, required: true},
    object: {type: String, required: true},
    method: {type: String, required: true},
    log: {type:String, required: true},
    srid : {type: String}  <== need to generate while saving
});

module.exports = mongoose.model('Logger', schema);

Мой вопрос таков: как я могу получить доступ к пользовательской функции при сохранении схемы? Возможно ли, если нет - какая альтернатива.

var data = {  
              "type" : "Info",
              "service" : "customerService",
              "object" : "customer.controller",
              "method" : "getCustomerByMSISDN",
              "log" : "INVOKE:getCustomerByMSISDN",
              "srid" : generateSRID(2,10) <== access mongodb fuction
           };

const logger = new Logger(data);

logger.save(function(err, result) {
    if (err) {
      console.log(err);
    }    
    console.log("## Log created successfully ##");    
});

1 Ответ

0 голосов
/ 28 июня 2018

Этого можно добиться с помощью предварительного сохранения мангуста

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

const schema = new Schema({
    type: {type: String, required: true},
    service: {type: String, required: true},
    object: {type: String, required: true},
    method: {type: String, required: true},
    log: {type:String, required: true},
    srid : {type: String  }  <== need to generate while saving
});

schema.pre('save', function(next) {
  this.srid= '1234';
  next();
});

module.exports = mongoose.model('Logger', schema);

Примечание: для обновления используйте предварительное обновление

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...