node.js - Mongoose .findOne() 在部署时中断
问题描述
我的 API 有使用 Mongoose 的微型端点。除了使用 .findOne() 的那个之外,它们都可以正常工作。这个在本地返回正确的数据,但在部署到 Now v2 时不返回。这是端点:
const { createError, run, send } = require("micro");
const mongoose = require("mongoose").set("debug", true);
const mongooseConnect = require("./utils/mongooseConnect");
const Art = require("./schemas").art;
mongooseConnect();
const art = async (req, res) => {
console.log("hello world");
const id = req.url.split("id=")[1].split("&")[0];
console.log("id", id);
console.log("mongoose.Types.ObjectId(id)", mongoose.Types.ObjectId(id));
try {
const data = await Art.findOne({ _id: id });
console.log("data", data);
if (!data) {
throw createError(404, "Item of art not found.");
}
send(res, 200, { data });
} catch (error) {
console.log(error);
throw createError(error.statusCode, error.statusText);
}
};
module.exports = (req, res) => run(req, res, art);
这是输出:
2019-05-25T02:07:12.706Z hello world
2019-05-25T02:07:12.706Z id 5cb0a26bea66fa13786dc289
2019-05-25T02:07:12.707Z mongoose.Types.ObjectId(id) 5cb0a26bea66fa13786dc289
2019-05-25T02:07:13.104Z Mongoose: arts.findOne({ _id: ObjectId("5cb0a26bea66fa13786dc289") }, { projection: {} })
2019-05-25T02:07:13.173Z data null
2019-05-25T02:07:13.174Z { Error: Item of art not found.
at createError (/var/task/api/art.js:1584:14)
at art (/var/task/api/art.js:98943:13)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7) statusCode: 404, originalError: undefined }
2019-05-25T02:07:13.175Z Error
at createError (/var/task/api/art.js:1584:14)
at art (/var/task/api/art.js:98949:11)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)
04 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB 104 MB
2019-05-25T02:07:32.932Z running builder.exports.prepareCache...
2019-05-25T02:07:32.933Z preparing cache ...
2019-05-25T02:07:32.937Z producing cache file manifest ...
对我来说奇怪的是,我可以在另一个端点 ( )中看到Art
架构的所有文档。const data = await Art.paginate();
在那里,我看到了应该匹配的文件
{
_id: '5cb0a26bea66fa13786dc289',
title: 'sdfsda'
}
请让我知道是否有任何其他细节会有所帮助。
解决方案
推荐阅读
- r - R metafor 森林图:在不更改注释大小的情况下更改汇总多边形大小
- jmeter - jMeter 负载测试:单一测试与分布式测试 - 截然不同的结果
- ajax - 从 Ajax 保存到子目录的文件上传
- bash - 如何根据目录名称重命名子目录中的文件
- powershell - 与file2比较时如何更新文件中的行
- swift - 当 UITextField.secureTextEntry 改变它的值时,Swift 得到回调
- python - 比较和附加不同长度的python列表
- go - 使用 Goroutine 订阅 MQTT 消息
- macos - 如何在我的 macOS El Capitan 上找到或制作 python 的可执行文件
- java - 如何正确使用Condition等待和notifyAll而不丢失通知?