Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js aws Lambda函数和postgres DB存在问题_Node.js_Postgresql_Amazon Web Services_Aws Lambda - Fatal编程技术网

Node.js aws Lambda函数和postgres DB存在问题

Node.js aws Lambda函数和postgres DB存在问题,node.js,postgresql,amazon-web-services,aws-lambda,Node.js,Postgresql,Amazon Web Services,Aws Lambda,这一天我遇到了aws lambda的问题。我需要通过向lambda传递用户名在RDS postgres db中搜索,但在每个测试事件中,它都会返回: "{ "errorMessage": "RequestId: 070f76a4-41c6-40d1-8ef2-0a84d9c04af0 Process exited before completing request" }" 尤其是堆栈返回: 启动请求ID:070f76a4-41c6-40d1-8ef2-0a84d9c04af0版本:$LAT

这一天我遇到了aws lambda的问题。我需要通过向lambda传递用户名在RDS postgres db中搜索,但在每个测试事件中,它都会返回:

"{
  "errorMessage": "RequestId: 070f76a4-41c6-40d1-8ef2-0a84d9c04af0 Process exited before completing request"
}"
尤其是堆栈返回:

启动请求ID:070f76a4-41c6-40d1-8ef2-0a84d9c04af0版本:$LATEST 2019-03-31T12:32:19.572Z 070f76a4-41c6-40d1-8ef2-0a84d9c04af0类型错误: 路径必须是字符串。接收未定义 在assertPath(path.js:28:11) 在Object.join(path.js:1236:7) 在Object.module.exports.getFileName(/var/task/node_modules/pgpass/lib/helper.js:61:16) 在module.exports(/var/task/node_modules/pgpass/lib/index.js:10:23) 在连接处。(/var/task/node_modules/pg/lib/client.js:110:9) 在emitOne(events.js:116:13) 在Connection.emit(events.js:211:7) 在插座上。(/var/task/node_modules/pg/lib/connection.js:125:12) 在emitOne(events.js:116:13) 在Socket.emit(events.js:211:7)结束请求ID:070f76a4-41c6-40d1-8ef2-0a84d9c04af0报告请求ID: 070f76a4-41c6-40d1-8ef2-0a84d9c04af0持续时间:583.72毫秒计费 持续时间:600毫秒内存大小:128 MB最大使用内存:35 MB
RequestId:070f76a4-41c6-40d1-8ef2-0a84d9c04af0进程在之前退出 完成请求


我希望Lambda返回数据库中所有用户名与我传递的用户名相似的用户。

我浏览了,没有找到任何对
onSuccess
onFailure
事件的引用,但在回调中只找到
err
res
对象(但我可能忽略了它):

但是,它还支持promise版本,这意味着您不必亲自承诺:

try {
  const res = await pool.query(text, values)
  console.log(res.rows[0])
  // { name: 'brianc', email: 'brian.m.carlson@gmail.com' }
} catch(err) {
  console.log(err.stack)
}
这意味着您的
searchUser
函数应该如下所示:

const searchUser = username => {
  return await psql.query('SELECT username FROM utilitator where username LIKE $1', [`%${username}%`])
};
最后,在处理程序上,因为您已经在使用节点8,所以不应该将承诺和回调混合在一起。只需在响应对象内以字符串化JSON的形式返回主体,如下所示(为了简单起见,省略了错误处理):


我正在浏览,没有找到任何对
onSuccess
onFailure
事件的引用,但在回调中只找到
err
res
对象(但我可能忽略了它):

但是,它还支持promise版本,这意味着您不必亲自承诺:

try {
  const res = await pool.query(text, values)
  console.log(res.rows[0])
  // { name: 'brianc', email: 'brian.m.carlson@gmail.com' }
} catch(err) {
  console.log(err.stack)
}
这意味着您的
searchUser
函数应该如下所示:

const searchUser = username => {
  return await psql.query('SELECT username FROM utilitator where username LIKE $1', [`%${username}%`])
};
最后,在处理程序上,因为您已经在使用节点8,所以不应该将承诺和回调混合在一起。只需在响应对象内以字符串化JSON的形式返回主体,如下所示(为了简单起见,省略了错误处理):


好的,我试过了,但没有接受searchUser中的Wait,但没有成功。唯一的问题是身体里是空的,这显然是另一个问题。你再也不会有例外了。如果body为null,则很可能是查询中存在错误或表为空。查询中存在错误。我已相应地编辑了我的答案。为方便起见,以下是您应该如何调用查询
return await psql.query('SELECT username FROM utilitor where username LIKE$1',[`%${username}%`])
Ok我在searchUser中尝试过,但没有接受wait,但它不起作用。唯一的问题是身体里是空的,这显然是另一个问题。你再也不会有例外了。如果body为null,则很可能是查询中存在错误或表为空。查询中存在错误。我已相应地编辑了我的答案。为方便起见,以下是您应该如何调用查询
return wait psql.query('SELECT username FROM utilitor where username LIKE$1',[`%${username}%`])
exports.handler = async (event) => {
  //const body = JSON.parse(event.body);

  const username = event.username;

  const result = await searchUser(username)

  if (result == "err") {
    return {
      "statusCode": 404,
      "isBase64Encoded": false,
      "body": JSON.stringify({message: 'User not found'}),
    }
  }
  return {
    "statusCode": 200,
    "isBase64Encoded": false,
    "body": JSON.stringify(result),
  }

};