Mongoose 调试写入 STDERR?

Mongoose debug writes to STDERR?

第一个问题啊啊啊!

有谁知道/知道为什么 mongoose 将其调试日志写入 stderr?有没有办法把它写到标准输出?

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

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()