在本地编写了express相关的代码,想部署到腾讯云的serverless服务上,单纯用示例的文件不会有问题,但是一导入自己写的数据库的接口就会产生问题,导致无法访问。
以下是入口函数,通过app.js文件进行其他组件的引入
// // 返回输入参数
const serverless = require("serverless-http")
let app = require("./app")
const handler = serverless(app)
module.exports.main = async (event, context) => {
const res = await handler(event,context)
//console.log('Hello World keanu reeves')
return res
}
以下是app.js,和入口函数所在文件为同一级目录
const express = require("express")
const app = express()
const indexRouter = require("./router/index")
const todoRouter = require("./router/todo")
const ser = require("./router/server")
app.use("/",indexRouter)
app.use("/todo",todoRouter)
app.use("/data",ser)
// app.use(express.json())
// app.use(express.urlencoded({extended:false})) 这两行不管注不注释都会报错
module.exports = app
以下是server.js,也就是自己编写的接口文件
const MongoClient = require("mongodb").MongoClient;
const express = require("express");
const app = express();
const url = "mongodb://127.0.0.1:27017";
const client = new MongoClient(url, { useUnifiedTopology: true });
const dbName = "DHU"
async function requireTwinsAll(req, res, next) {
await client.connect();
collection = "twins";
let db = client.db(dbName);
const data = await db.collection(collection).find({})
await data.forEach((doc) => {
console.log(doc);
})
res.send("Success,the twins data is shown in the terminal!");
client.close();
};
async function requireTwinmodelAll(req,res,next) {
await client.connect();
collection = "twinmodel";
let db = client.db(dbName);
const data = await db.collection(collection).find({})
await data.forEach((doc) => {
console.log(doc);
})
res.send("Success,the twinmodel data is showed in the terminal!");
client.close();
}
async function requireTwinsDtid(req, res, next, dtid) {
await client.connect();
collection = "twins";
let db = client.db(dbName);
await db.collection(collection).aggregate([{ "$unwind": "$twins" }, { "$match": { "twins.@dtId": dtid } }, { "$project": { "twins.@metadata.@model": 1 } }]).toArray((err, data) => {
console.log(data);
res.send(data);
})
}
async function updateEnField(req, res, next,en) {
await client.connect();
collection = "twinmodel";
let db = client.db(dbName);
await db.collection(collection).updateMany({},{$set:{"displayName.en":en}});
res.send("Upadated!");
}
app.get('/twins', async(req, res, next) => {
if (req.query.dtid == undefined)
requireTwinsAll(req, res, next);
else {
var dtid = req.query.dtid;
requireTwinsDtid(req, res, next, dtid);
}
})
app.get('/twinmodel', (req, res, next) => {
if (req.query.en == undefined)
requireTwinmodelAll(req,res,next);
else {
var en = req.query.en;
updateEnField(req,res,next,en);
}
})
app.use(express.json())
app.use(express.urlencoded({extended:false}))
module.exports = app
求各位牛人指教!不胜感激!