Promise 返回未定义的nodejs

发布于 2025-01-20 16:12:23 字数 1933 浏览 4 评论 0原文

我又回来了同样的问题,因为我的诺言返回未定义,请提供帮助。

在这里,我正在使用IPFS使用Savedata()保存数据,该数据带有JSON字符串,文档名称和秘密短语。

我不确定为什么承诺要返回不确定的我检查了所有内容

是新代码

index.js

 exports.savedata = async function savedata(jsondata,Docname,secretuuid){
    const docname = Docname
    let ipfss = await main();
    let datavar = await ipfss.add(jsondata);

    //check if input file exists or not?
    const fpath =  __dirname + "\\"+ "input.json"

    if (fs.existsSync(fpath)) {
    }

    else{
        const defobj = {defaultID:"defaultID"}
        fs.writeFile("input.json",JSON.stringify(defobj),function(err){
            // console.log('saved!') 
        })
    }

    //create an object and put an array with defaultid:defaultid to it
 

    //take that object and keep concatenating the new arrays[new documents]
    fs.readFile("input.json","utf-8",function(err,data){
        if(err){
            console.log(err)
        }
     
        const rembrk1 = data.replaceAll("{","")
        const rembrk2 = rembrk1.replaceAll("}","")
        const newstring = JSON.stringify({[docname]: datavar.path})
        const URK = uuidv4() + "rkbyavds"
        const CAT = CryptoJS.AES.encrypt(String(datavar.path),secretuuid);
        var ENCAT = CAT.toString()
        const fstring = "{" + rembrk2 + "," + docname + ":" + CAT  + "}"
        fs.writeFile("input.json", JSON.stringify(fstring),function(err){
            if(err){
                console.log(err)
            }
        })
        
        return new Promise((resolve,reject) => {
            // console.log('saved')
            const retobj = {CAT:ENCAT,URK:URK}
            resolve(retobj)
        });
             
        
    })

}

test.js


obj = JSON.stringify({user:"MqwMedz2edemusaaa",age:1291})
const op = savedata(obj,"doc1","verysecretuuid")
op.then(x=>{
    console.log(x)
})

i am back with a same issue for my promise returning undefined please help.

Here, i am using ipfs to save data with savedata() which takes in a json string,a document name and a secret phrase.

i am not quit sure why promise is returning undefined i have checked everything

here is the new code

index.js

 exports.savedata = async function savedata(jsondata,Docname,secretuuid){
    const docname = Docname
    let ipfss = await main();
    let datavar = await ipfss.add(jsondata);

    //check if input file exists or not?
    const fpath =  __dirname + "\\"+ "input.json"

    if (fs.existsSync(fpath)) {
    }

    else{
        const defobj = {defaultID:"defaultID"}
        fs.writeFile("input.json",JSON.stringify(defobj),function(err){
            // console.log('saved!') 
        })
    }

    //create an object and put an array with defaultid:defaultid to it
 

    //take that object and keep concatenating the new arrays[new documents]
    fs.readFile("input.json","utf-8",function(err,data){
        if(err){
            console.log(err)
        }
     
        const rembrk1 = data.replaceAll("{","")
        const rembrk2 = rembrk1.replaceAll("}","")
        const newstring = JSON.stringify({[docname]: datavar.path})
        const URK = uuidv4() + "rkbyavds"
        const CAT = CryptoJS.AES.encrypt(String(datavar.path),secretuuid);
        var ENCAT = CAT.toString()
        const fstring = "{" + rembrk2 + "," + docname + ":" + CAT  + "}"
        fs.writeFile("input.json", JSON.stringify(fstring),function(err){
            if(err){
                console.log(err)
            }
        })
        
        return new Promise((resolve,reject) => {
            // console.log('saved')
            const retobj = {CAT:ENCAT,URK:URK}
            resolve(retobj)
        });
             
        
    })

}

test.js


obj = JSON.stringify({user:"MqwMedz2edemusaaa",age:1291})
const op = savedata(obj,"doc1","verysecretuuid")
op.then(x=>{
    console.log(x)
})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

懵少女 2025-01-27 16:12:23

那么,RegisterUser 函数执行操作并检索数据。它不做的是返回任何值。这意味着它默认会返回一个 Promise,但这个 Promise 没有任何需要解析的值。

根据您想要返回的对象,您需要返回它或创建并返回一个新的 Promise,您可以从中调用 resolve 函数。

您可以在这里阅读更多相关信息: https:// developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

Well, the RegisterUser function executes the actions and retrieves the data. What it doesn't do is return any value. This means it'll return a Promise by default, but this Promise won't have any value to resolve.

Depending on which object you want to have returned, you need to return it or create and return a new Promise from which you can call the resolve-function.

You can read more about it here: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文