我有大量的json对象数组,我需要根据多个用户选择输入进行过滤.目前我正在将过滤器功能链接在一起,但我感觉这很可能不是最有效的方法.
目前我这样做:
var filtered = data.filter(function(data) {
return Conditional1
})
.filter(function(data) {
return Conditional2
})
.filter(function(data) {
return Conditional3
}) etc...;
Run Code Online (Sandbox Code Playgroud)
虽然(我认为)每次迭代'数据'可能会更少,但我想知道更好的做法是做这样的事情:
var condition1 = Conditional1
var condition2 = Conditional2
var condition3 = Conditional3
etc...
var filtered = data.filter(function(data) {
return condition1 && condition2 && condition3 && etc...
});
Run Code Online (Sandbox Code Playgroud)
我已经研究了多个高阶函数链,特别是过滤函数 - 但是我没有看到任何关于最佳实践的东西(或者不好的做法,也没有定时和比较我建议的两个).
在一个具有大数据集和许多条件的用例中(我认为它们都相当容易阅读)?
或者也许有一种更有效的方式我缺少(但仍使用高阶函数).
我正在使用Apollo服务器,试图为电子商务应用程序构造一个嵌套查询。我正在查询rest api来检索购物篮中的项目。
但是,此请求的响应未包含我们需要的所有产品信息。因此,我尝试使用返回的参数之一作为变量来嵌套其他查询,以获取所需的其他产品信息。
我已经看到了嵌套的查询示例,据我了解(尤其是GraphQL和Apollo的新手),这是GraphQL的优点之一。但是我还没有看到任何嵌套查询依赖于父查询的返回值的示例。
//typeDefs
const typeDefs = gql`
type Product {
id: ID
name: String
sku: String
length: Float
}
type CartItem {
id: ID
product_id: ID
quantity: Int
product(product_id: ID!): Product
}
type Query {
getProduct(id: ID!): Product
getCartItems(id: ID!): [CartItem]
}
`;
// resolvers
const processResponse = (resolved) => {
try {
const { data } = resolved;
return data;
} catch (error) {
return error;
}
};
const resolvers = {
Query: {
getProduct: async (parent, …Run Code Online (Sandbox Code Playgroud) 我创建了两个 Firebase 函数 - 一个是 HTTPS,我在其中向主题发布消息,另一个是 pub/sub 函数,在其中我响应发布到该主题的消息。
testPubSub.ts
import { pubsub } from "firebase-functions";
export const testPubSub = pubsub
.topic("high-scores")
.onPublish(async (message, context) => {
console.log("hit test pubsub");
return null;
});
Run Code Online (Sandbox Code Playgroud)
testHttps.ts
import { https } from "firebase-functions";
import { messaging } from "firebase-admin";
export const testHookEndpoint = https.onRequest(async (request, response) => {
const payload = {
notification: {
title: "Test title",
body: "test body"
}
};
const pubsubResponse = await messaging().sendToTopic("high-scores", payload);
console.log("response from pubsub", pubsubResponse);
response.send("success");
}); …Run Code Online (Sandbox Code Playgroud)