Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
Javascript 执行函数的值返回一个承诺_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 执行函数的值返回一个承诺

Javascript 执行函数的值返回一个承诺,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我有这段代码,在第二个函数中,我检查db,如果我在函数中记录东西,它会记录良好,但是如果我分配一个var并调用函数,当它返回true或false时,我会得到一个挂起的承诺 const mongoose = require('mongoose') const config = require('./config.json') const schema = require('./data') const mongoactivate = async(config) => { await mo

我有这段代码,在第二个函数中,我检查db,如果我在函数中记录东西,它会记录良好,但是如果我分配一个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)

您在使用async/await时遇到了问题。您必须先等待mongoactivate(config)检查('p','q')。尝试写入等待这些函数


祝你好运,我的g

你在使用async/await时遇到了麻烦。您必须先等待mongoactivate(config)检查('p','q')。尝试写入等待这些函数


祝你好运,我的g

你没有在等待
mongoactivate()
函数。异步函数总是返回一个承诺。另外,您的
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)
})()

您没有在等待
mongoactivate()
函数。异步函数总是返回一个承诺。另外,您的
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)
})()

您需要知道如何使用wait/async,JS不像C#或C 如果您对此仍有一些问题,我建议您解决以下示例中的承诺:

 const Afunction = async(p,q)=> {
 let ThePromise = new Promise((resolve,reject) => {
      //resolve the pending promise that you got
         let data = await schema.findOne({
         username: p,
         pass: q
         })
       let cor = (data === null) ? false : true; 
       resolve(cor)
 })
return ThePromise.then(val=> {return val} )
}
然后,您可以通过以下方式获得结果:

  const TheValueIwant = await Afunction ("p","q");

您需要知道如何使用wait/async,JS不像C#或C 如果您对此仍有一些问题,我建议您解决以下示例中的承诺:

 const Afunction = async(p,q)=> {
 let ThePromise = new Promise((resolve,reject) => {
      //resolve the pending promise that you got
         let data = await schema.findOne({
         username: p,
         pass: q
         })
       let cor = (data === null) ? false : true; 
       resolve(cor)
 })
return ThePromise.then(val=> {return val} )
}
然后,您可以通过以下方式获得结果:

  const TheValueIwant = await Afunction ("p","q");

但是,由于整个索引不是异步的,等待函数调用需要异步,如果我在check函数中记录cor,它的日志会正确,但是由于整个索引不是异步的,等待函数调用需要异步,如果我在check函数中记录cor,它的日志会正确