【问题标题】:Mongoose debug writes to STDERR?Mongoose 调试写入 STDERR?
【发布时间】:2015-12-12 03:52:54
【问题描述】:

第一个问题,啊!

有没有人知道/有关于为什么 mongoose 将其调试日志写入 stderr 的信息?反正有没有写到标准输出?

【问题讨论】:

    标签: debugging mongoose stdout options stderr


    【解决方案1】:

    调试选项接受一个函数而不是一个布尔值:

    mongoose.set("debug", function (collection, method, paramA, paramB, paramC) {
    
        console.log(collection)
        console.log(method)
        console.log(paramA)
        console.log(paramB)
        console.log(paramC)
    })
    

    我之所以输入paramA, paramB, paramC 是因为参数取决于所使用的方法和选项:

    Person.create({firstName: "john"}, callback)
    // people
    // insert
    // {firstName: "john"}
    // undefined
    // undefined
    
    Person.update({firstName: "john"}, {lastName: "doe"}, {new: true}, callback);
    // people
    // update
    // {firstName: "john"}
    // {$set: {lastName: "doe"}}
    // {new: true}
    
    Person.find({firstName: "john"}, callback);
    // people
    // find
    // {firstName: "john"}
    // undefined
    // undefined
    
    Person.find({firstName: "john"}, {limit: 1}, callback);
    // people
    // find
    // {firstName: "john"}
    // {limit: 1}
    // undefined
    

    记录的信息是 Mongodb 输入,而不是 Mongoose 输入。您可以在update() 方法中看到这一点,paramB{$set: {lastName: "doe"}} 出现。在幕后,Mongoose 将更新转换为使用 $set,这就是记录的原因。

    从此,您可以轻松地随意格式化它和process.stdout.write()

    【讨论】:

    • 太棒了,谢谢。使用“调试”负责生成日志的事实,我在 mongoose/lib/collection.js 中找到了这一行:console.error('\x1B[0;36mMongoose:\x1B[0m %s.%s(% s) %s %s %s', self.name, i, print(args[0]), print(args[1]), print(args[2]), print(args[3]))跨度>
    猜你喜欢
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    相关资源
    最近更新 更多