node.js - 谷歌云功能连接到mongodb
问题描述
我正在尝试在我的谷歌云函数 HTTP 触发器中连接到 MongoDB。
'use strict';
const http = require('http');
const MongoClient = require('mongodb').MongoClient;
exports.weatherWebhook = (req, res) => {
console.log(req.body);
MongoClient.connect('string', (err, client) => {
if (err) {
console.log(err)
} else {
db = client.db('chatbot')
db.collection('chatbot_params').save({ "loanType": "123", "loanAmount": "90000", "duration": "5 years", "userSession": "test-1234" }, (err, result) => {
if (err) {
console.log(err)
res.json({ "status": "err" })
} else {
res.json({ "status": "saved" })
}
})
}
})
}
但是当我运行程序时,我得到一个错误提示。
ReferenceError: db is not defined at MongoClient.connect
(/user_code/index.js:14:16) at result
(/user_code/node_modules/mongodb/lib/utils.js:414:17) at
executeCallback (/user_code/node_modules/mongodb/lib/utils.js:406:9)
at /user_code/node_modules/mongodb/lib/mongo_client.js:272:5 at
connectCallback
(/user_code/node_modules/mongodb/lib/mongo_client.js:946:5) at
/user_code/node_modules/mongodb/lib/mongo_client.js:816:13 at
_combinedTickCallback (internal/process/next_tick.js:73:7) at process._tickDomainCallback (internal/process/next_tick.js:128:9)
这是为什么?我在其他应用程序(不是云功能)中实现了相同的代码。它似乎工作正常。
注意:我正在使用 mongo lab 来托管数据库
解决方案
请为 MongoClient 指定 url,因为现在您只是将 'string' 作为 url 选项传递。看看下面
MongoClient.connect(url, function(err, client) { // provide mongo lab url
assert.equal(null, err);
console.log("Connected successfully to server");
const db = client.db(dbName);
client.close();
});
希望,这可能会帮助你
推荐阅读
- docker - 如何将 docker 卷移动到磁盘位置?
- ios - SwiftUI - 在“onAppear”中更改属性在呈现时不会更改工作表
- python - 如何将 SQL 查询转换为 django ORM
- .net - 在 vb.net 中使用 Request.Url.AbsolutePath 时如何防止 xss
- python-3.x - 我是否使用循环、df.melt 或 df.explode 来实现扁平化数据框?
- vb.net - vb.net 我正在尝试调整控件(标签、文本框、richtextbox)的大小,使其成为包含给定字符串的最小正方形
- python - 'with' 语句在 kivy 中如何工作?
- wordpress - Heroku 应用程序名称重命名仍然引用旧应用程序 url
- android - 我如何从父项目中打开子库的活动
- php - 在ajax发布后下载生成的pdf