我正在使用Loopback3,并试图记录在项目文件夹之外的共享模型的消息。我的项目文件夹结构如下所示
myproj\server\logger.js // using winston logger here
myProj\common\models\ // I've couple of models here and able to use above logger另外,我在myproj文件夹之外还有几个模型(../../shared/ models )。下面是我的server\model-config.json
"sources": [
"loopback/common/models",
"loopback/server/models",
"../common/models",
"../../shared/models", // Shared models
"./models"
],Person位于“共享模型”文件夹中。如何将记录器对象传递给它。
module.exports = function(Person){
Person.greet = async function(msg) {
logger.info("received message: " + msg); // How to get here above winston logger object ?
console.log("received message: " + msg);
return 'Greetings... ' + msg;
}
Person.remoteMethod('greet', {
accepts: {arg: 'msg', type: 'string'},
returns: {arg: 'greeting', type: 'string'}
});};
发布于 2020-10-14 15:13:55
当您将环回模型分散在多个目录或甚至存储库中时,可能会有些混乱。从静态全局引用(附在回送实例对象)中控制台常见部件(如记录器、验证、utils等)始终是一种很好的做法。此回送实例对象作为对其所有模型的引用。我解决这个问题的方法是..。
logger类的实例附加到回送的app实例.'use strict';
const { logger } = require("./logger");
module.exports = function (app) {
app.logger = logger;
};app引用中访问它。Person.greet = async function(msg) {
Person.app.logger.info("received message: " + msg);
return 'Greetings... ' + msg;
}发布于 2020-10-12 18:35:28
我确实喜欢下面
在server\server.js中
const {logger} = require("./logger");
app.start = function() {
return app.listen(function() {
app.emit('started');
:
:
app.models.Person.logger = logger; // Adding new property to Person model
});
};在Person模型中
Person.greet = async function(msg) {
Person.logger.info("received message: " + msg); // using logger object like this
this.logger.info("received message: " + msg); // or like this
console.log("received message: " + msg);
return 'Greetings... ' + msg;
}https://stackoverflow.com/questions/64322859
复制相似问题