我有很多问题:)
我已经开始使用 Cosmos DB (SQL API)。爱它!
但我正在努力寻找构建和管理代码的最佳方式。我正在使用 Visual Studio。
这是一些代码,我将根据这 4 个 javascript 函数提出问题:
function createYayBase(something) {
// UDF
return {
pk: "Yay",
id: "Ptr=" + something
};
}
function createYayDoc(whatever, something) {
// UDF
var o = createYayBase(something);
o.Message = whatever;
return o;
}
function validateYayDoc(doc) {
// UDF
if (doc.pk !== "Yay") { throw new Error("non-Yay! :("); }
}
function processYay(val) {
// stored procedure
var doc = CreateYayDoc(val, "Rec");
validateYayDoc(doc);
...createDocument(selflink, doc, ...);
}
在我的解决方案中,这 4 个函数位于 4 个不同的 .js 文件中。我会将前 3 个部署为我的集合中他们自己的用户定义函数。最后,我将部署为存储过程。
我的应用程序将执行“processYay”存储过程来执行一些操作。UDF 是支持性的。
问题:
- 我可以直接从存储过程中调用 UDF,就像我在上面的“processYay”中所做的那样吗?或者它们只能作为查询的一部分访问?
- 我可以像在“createYayDoc”中那样从另一个 UDF 调用 UDF 吗?
- UDF 可以“抛出”还是在这种情况下被认为是副作用?
如果答案是“nope”、“nope”和“nope”,似乎还有另一种解决方案:在存储过程本身内部定义函数。它会像这样完美地工作:
function processYay(val) {
// stored procedure
function createYayBase(something) { ... }
function createYayDoc(whatever, something) { ... }
function validateYayDoc(val) { ... }
var doc = CreateYayDoc(val, "Rec");
validateYayDoc(doc);
...createDocument(selflink, doc, ...);
}
但是之后...
如何重用代码?
我的 javascript 位于 .NET 类库中。我喜欢“#include”技巧:)。我是否与 webpack 等一起破解某些东西?
或者......人们使用一些公认的方法吗?