SSJS 库中的 XPages 函数未 return 作为文档

XPages function in SSJS Library does not return as document

我创建了 2 个函数。我从 "createNewOne" 调用 "findTitleNew"。 我在 "createNewOne" 函数中找到了一个文档,但是当我 return 函数 "findTitleNew" 时,我丢失了在 "findTitleNew" 中找到的文档 如何在不丢失该文件的情况下继续? 注意:此函数是通用的,因为我在应用程序中多次使用这些函数。

<xp:button value="Create" id="btnCreate">
            <xp:eventHandler event="onclick" submit="true"
                refreshMode="complete" immediate="false" save="true">
                <xp:this.action><![CDATA[#{javascript:createNewDoc(document1)}]]></xp:this.action>
            </xp:eventHandler>
        </xp:button>


function findTitleNew(currDoc:NotesXSPDocument)
{
    try
    {
        var dbOther1:NotesDatabase = session.getDatabase(database.getServer(),sessionScope.kontak_db_Path);
        if (currDoc.getItemValueString("UNID")!="")
        {
            var otherDoc:NotesDocument = dbOther1.getDocumentByUNID(currDoc.getItemValueString("UNID"))
        }
    }
    catch (e) 
    {
        requestScope.status = e.toString();
    }
}

function createNewOne(docThis:NotesXSPDocument)
{
    try
    {
        //do stafff
        findTitleNew(docThis)
        //do stafff
    }

    catch (e) 
    {
        requestScope.status = e.toString();
    }
}

如有任何建议,我们将不胜感激。
Cumhur Ata

我的 SSJS 真的很生疏,我很难准确地说出你想要什么但是 你说:"I lost the document that was found in "findTitleNew"如何在不丢失该文件的情况下继续?"

你的函数 "findTitleNew" 没有 return 任何东西。所以如果你在那里得到一个文档你可以使用它,但是如果你想在 "createNewOne()" 函数中移动你需要 return 找到的文档

 if (currDoc.getItemValueString("UNID")!="")
        {
            var otherDoc:NotesDocument = dbOther1.getDocumentByUNID(currDoc.getItemValueString("UNID"))
return otherDoc;
        }

然后:

function createNewOne(docThis:NotesXSPDocument)
{
    try
    {
        //do stafff
        var returnDoc = findTitleNew(docThis);
        if (null != returnDoc) {
            // do stuff with returnDoc here...
        }
        //do stafff
    }

    catch (e) 
    {
        requestScope.status = e.toString();
    }
}

这是关于您的变量 otherDoc 范围

您将变量定义为 var otherDocThe scope of a variable declared with var is its current execution context, which is either the enclosing function or, for variables declared outside any function, global.
var otherDoc 是在函数内定义的,因此它 "lives" 仅在函数内。这意味着 otherDoc 在函数外不可用。

您可以在不声明的情况下为 otherDoc 赋值。在这种情况下,它将在全球范围内可用。但不推荐这样做,因为代码会变得非常混乱。

最好的方法是 return 带有 return otherDoc 的变量,就像 David 在他的回答中显示的那样。