小编zem*_*rco的帖子

如何在JavaScript中设置默认布尔值?

在JavaScript中设置默认可选值通常是通过||字符完成的

var Car = function(color) {
  this.color = color || 'blue';
};

var myCar = new Car();
console.log(myCar.color); // 'blue'

var myOtherCar = new Car('yellow');
console.log(myOtherCar.color); // 'yellow'
Run Code Online (Sandbox Code Playgroud)

这工作,因为colorundefinedundefined || String永远的String.当然,这也适用周围的其他方式的String || undefinedString.当两个Strings人出现时,第一个获胜者'this' || 'that''this'.它不工作的其他方式为'that' || 'this''that'.

问题是:如何用布尔值实现相同的效果?

以下面的例子为例

var Car = function(hasWheels) {
  this.hasWheels = hasWheels || true;
}

var myCar = new Car();
console.log(myCar.hasWheels); …
Run Code Online (Sandbox Code Playgroud)

javascript boolean

57
推荐指数
3
解决办法
3万
查看次数

检查mongoose验证错误的最佳方法

我的usermodel 有两个验证函数

User.schema.path('email').validate(function(value, respond) {
  User.findOne({email: value}, function(err, user) {
    if(err) throw err;
    if(user) return respond(false);
    respond(true);
  });
}, 'EMAIL_EXISTS');
Run Code Online (Sandbox Code Playgroud)

同样的 username

User.schema.path('username').validate(function(value, respond) {
  User.findOne({username: value}, function(err, user) {
    if(err) throw err;
    if(user) return respond(false);
    respond(true);
  });
}, 'USERNAME_TAKEN');
Run Code Online (Sandbox Code Playgroud)

它们以下列格式返回错误

{ message: 'Validation failed',
  name: 'ValidationError',
  errors: 
    { username: 
      { message: 'Validator "USERNAME_TAKEN" failed for path username',
        name: 'ValidatorError',
        path: 'username',
        type: 'USERNAME_TAKEN' } } }
Run Code Online (Sandbox Code Playgroud)

email路径的错误类似.是否有更智能的方法来检查这些错误而不是以下?

if (err && err.errors && err.errors.username) { ... } …
Run Code Online (Sandbox Code Playgroud)

mongoose node.js

26
推荐指数
2
解决办法
4万
查看次数

如何使用Swift Codable处理部分动态JSON?

我有一些通过websocket连接进入的JSON消息.

// sample message
{
  type: "person",
  data: {
    name: "john"
  }
}

// some other message
{
  type: "location",
  data: {
    x: 101,
    y: 56
  }
}
Run Code Online (Sandbox Code Playgroud)

如何使用Swift 4和Codable协议将这些消息转换为正确的结构?

在Go中我可以做类似的事情:"嘿,此刻我只关心这个type领域而我对其余部分(data部分)不感兴趣." 它看起来像这样

type Message struct {
  Type string `json:"type"`
  Data json.RawMessage `json:"data"`
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到Data的那样json.RawMessage,可以在以后解析.这是一个完整的示例https://golang.org/pkg/encoding/json/#example_RawMessage_unmarshal.

我可以在Swift中做类似的事情吗?喜欢(尚未尝试过)

struct Message: Codable {
  var type: String
  var data: [String: Any]
}
Run Code Online (Sandbox Code Playgroud)

然后switchtype将字典转换为适当的结构.那会有用吗?

ios swift codable

13
推荐指数
1
解决办法
2487
查看次数

Golang Web服务器在crypto/tls泄漏内存.(*block).reserve

我有一个用Go编写的Web服务器.

tlsConfig := &tls.Config{
    PreferServerCipherSuites: true,
    MinVersion:               tls.VersionTLS12,
    CurvePreferences: []tls.CurveID{
        tls.CurveP256,
        tls.X25519,
    },
    CipherSuites: []uint16{
        tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
        tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
        tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,
        tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,
        tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
        tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
    },
}

s := &http.Server{
    ReadTimeout:  5 * time.Second,
    WriteTimeout: 10 * time.Second,
    IdleTimeout:  120 * time.Second,
    Handler:      r, // where r is my router
    TLSConfig:    tlsConfig,
}

// redirect http to https
redirect := &http.Server{
    ReadTimeout:  5 * time.Second,
    WriteTimeout: 10 * time.Second,
    IdleTimeout:  120 * time.Second,
    Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Connection", "close")
        url := "https://" …
Run Code Online (Sandbox Code Playgroud)

ssl memory-leaks go tls1.2

10
推荐指数
1
解决办法
358
查看次数

如何使用 useEffect 的异步返回值作为 useState 中的默认值?

我创建了一个简单的例子https://codesandbox.io/s/4zq852m7j0

如您所见,我正在从远程来源获取一些数据。我想使用返回值作为我的文本字段中的值。

const useFetch = () => {
  const [value, setValue] = useState("");

  useEffect(
    async () => {
      const response = await fetch("https://httpbin.org/get?foo=bar");
      const data = await response.json();
      setValue(data.args.foo);
    },
    [value]
  );

  return value;
};
Run Code Online (Sandbox Code Playgroud)

但是,在useState函数内部使用该值不起作用。我认为useState仅在第一次渲染时使用默认值。首次渲染时,该值显然未设置,因为它是异步的。文本字段应该有值,bar但它是空的。

function App() {
  const remoteName = useFetch();
  // i want to see the remote value inside my textfield
  const [name, setName] = useState(remoteName);

  const onChange = event => {
    setName(event.target.value);
  };

  return (
    <div className="App">
      <p>remote …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-hooks

7
推荐指数
1
解决办法
8296
查看次数

WebAssembly &lt;-&gt; JavaScript 内存交互如何与多个类型化数组一起工作?

我有一个简单的 c 函数。

void fill(float *a, float *b)
{
  a[0] = 1;
  b[0] = 2;
}

int main()
{
    float a[1];
    float b[1];

    fill(a, b);

    printf("%f\n", a[0]);
    printf("%f\n", b[0]);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这给了我

1.000000
2.000000
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试通过 WebAssembly 从 JavaScript 做同样的事情。

var wasmModule = new WebAssembly.Module(wasmCode);
var wasmInstance = new WebAssembly.Instance(wasmModule, wasmImports);

const a = new Float32Array(wasmInstance.exports.memory.buffer, 0, 1)
const b = new Float32Array(wasmInstance.exports.memory.buffer, 4, 1)

wasmInstance.exports.fill(a, b)

log(a)
log(b)
Run Code Online (Sandbox Code Playgroud)

这是 wasm 小提琴https://wasdk.github.io/WasmFiddle/?19x523

这次a[2],b 是[0] …

javascript typed-arrays emscripten webassembly

5
推荐指数
1
解决办法
919
查看次数

自定义404与Gorilla Mux和std http.FileServer

我有以下代码,一切正常.

var view404 = template.Must(template.ParseFiles("views/404.html"))

func NotFound(w http.ResponseWriter, r *http.Request) {
  w.WriteHeader(404)
  err := view404.Execute(w, nil)
  check(err)
}

func main() {
  router := mux.NewRouter()
  router.StrictSlash(true)
  router.NotFoundHandler = http.HandlerFunc(NotFound)
  router.Handle("/", IndexHandler).Methods("GET")
  router.PathPrefix("/public/").Handler(http.StripPrefix("/public/", http.FileServer(http.Dir("public"))))
  http.Handle("/", router)
  http.ListenAndServe(":8000", nil)
}
Run Code Online (Sandbox Code Playgroud)

对路线的请求/cannot/find显示我的自定义404模板.我的/public/目录中的所有静态文件也正确提供.

我在处理不存在的静态文件并显示我的自定义NotFound处理程序时遇到问题.请求/public/cannot/find调用回复的标准http.NotFoundHandler

404页面不存在

如何为普通路由和静态文件使用相同的自定义NotFoundHandler?


更新

我最终FileHandler通过包装来实现我自己的http.ServeFile@Dewy Broto建议.

type FileHandler struct {
  Path string
}

func (f FileHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
  prefix := "public"
  http.ServeFile(w, r, path.Join(prefix, f.Path))
}

// …
Run Code Online (Sandbox Code Playgroud)

go

3
推荐指数
1
解决办法
4146
查看次数

Postgres - 如何使用 UNION ALL 实现 UNION 行为?

parent我有一张带有和id 的表child

create table if not exists stack (
    parent int,
    child int
)
Run Code Online (Sandbox Code Playgroud)

每个父母可以有多个孩子,每个孩子又可以有多个孩子。

insert into stack (parent, child) values
    (1,2),
    (2,3),
    (3,4),
    (4,5),
    (5,6),
    (6,7),
    (7,8),
    (8,9),
    (9,null),
    (1,7),
    (7,8),
    (8,9),
    (9,null);
Run Code Online (Sandbox Code Playgroud)

数据看起来像这样。

|parent|child|
|------|-----|
|1     |2    |
|2     |3    |
|3     |4    |
|4     |5    |
|5     |6    |
|6     |7    |
|7     |8    |
|8     |9    |
|9     |NULL |
|1     |7    |
|7     |8    |
|8     |9    |
|9     |NULL |
Run Code Online (Sandbox Code Playgroud)

我想找到所有的孩子。我可以将递归 …

sql postgresql recursion

3
推荐指数
1
解决办法
91
查看次数

唯一和稀疏索引会导致重复错误

我有这样的事情:

var mongoose = require('mongoose');

mongoose.connect('mongodb://...');

var UserSchema = mongoose.Schema({
  name: {
    type: String,
    unique: true
  },
  token: {
    type: String,
    unique: true,
    sparse: true
  }
});

var User = mongoose.model('User', UserSchema);

var peter = new User();

peter.name = 'peter';
peter.token = null;

peter.save(function(err) {
  if (err) console.log(err);
  console.log('done with peter');

  var john = new User();

  john.name = 'john';
  john.token = null;

  john.save(function(err) {
    if (err) console.log(err);
    console.log('done with john');
  });

});
Run Code Online (Sandbox Code Playgroud)

因此peter首先和之后创建john.但是,john保存时会mongoose …

mongoose node.js

2
推荐指数
1
解决办法
1725
查看次数

具有隔离范围的angular.js指令

我知道关于这个话题已经有很多问题,但我不能让我的例子有用.

请参阅plnkr.co#ua32dkF7fz6X2fA0ZAw3上的示例.

每个预告片都有一些额外的信息,当用户点击其中一个预告片时,这些信息会出现.但是,只要我点击其中一个预告片,其他信息就会出现在每个预告片下方.我想只在我点击的一个预告片下面显示它们.

我很确定这种情况正在发生,因为指令共享相同的父范围.如何将isActive变量保密为每个预告片?

javascript angularjs

2
推荐指数
1
解决办法
4718
查看次数

Protobuf,Go和私人领域

假设Player我的.proto文件已经定义了.

message Player {
  string first_name = 1;
  string last_name = 2;
  int32 user_id = 3;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用https://github.com/twitchtv/twirp在我的Go后端和我的JavaScript前端之间进行通信.如果您不知道Twirp,它只是JSON RPC over HTTP 1.1.

Player消息被转换成细末结构

type Player struct {
  FirstName string
  LastName string
  UserId int32
}
Run Code Online (Sandbox Code Playgroud)

众所周知,大写字段是公开的.但是我想保持UserId私有,即将其设为小写.前端的用户不应该看到UserId播放器的用户.在我的后端,我需要这些信息,所以我不能简单地删除该字段.

任何想法如何处理这种情况?我的.proto文件中是否可以有私有字段?

struct go protocol-buffers

2
推荐指数
1
解决办法
343
查看次数