javascript - 执行函数的值返回一个承诺
问题描述
我有这段代码,在第二个函数中,我检查数据库,如果我在函数内记录东西,它记录正常,但是如果我分配一个 var 并调用函数,因为它返回 true 或 false,我得到一个未决的承诺
const mongoose = require('mongoose')
const config = require('./config.json')
const schema = require('./data')
const mongoactivate = async(config) => {
await mongoose.connect(config.mongo, {
useUnifiedTopology: true,
useNewUrlParser: true
})
}
mongoactivate(config)
const check = async(p, q) => {
let data = await schema.findOne({
username: p,
pass: q
})
let cor = (data === null) ? false : true;
console.log(cor)
}
const ans = check("p", "q")
console.log(ans)
解决方案
您不是在等待该mongoactivate()
功能。异步函数总是返回一个 Promise。此外,您的check
函数永远不会返回任何内容,因此ans
不会是您期望的值。返回cor
函数末尾的变量。
const mongoose = require('mongoose')
const config = require('./config.json')
const schema = require('./data')
const mongoactivate = async (config) => {
await mongoose.connect(config.mongo, {
useUnifiedTopology: true,
useNewUrlParser: true
})
}
const check = async (p, q) => {
let data = await schema.findOne({
username: p,
pass: q
})
let cor = (data === null) ? false : true;
return cor;
}
(async () => {
await mongoactivate(config)
const ans = await check("p", "q")
console.log(ans)
})()
推荐阅读
- javascript - HighCharts - tickInterval 和 tickAmount 的问题
- c++ - 使用未初始化的局部变量,即使它在一开始就已初始化
- apache-spark - pyspark 中 col() 函数的使用
- html - 列表的最小高度以使用纯 CSS 至少适合 n 个列表项
- java - 单击按钮后如何将一个小程序表单调用到另一个表单
- java - 获取firebase数据的id
- mongodb - 如何在 mLab 中将集合从一个数据库复制到另一个数据库?
- xamarin.forms - System.Net.WebException:错误:TrustFailure(身份验证失败,请参阅内部异常。)
- java - 像 xsd 一样读取和创建 xml
- python - Django自行删除表数据