在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)
这工作,因为color是undefined和undefined || String永远的String.当然,这也适用周围的其他方式的String || undefined是String.当两个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) 我的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) 我有一些通过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)
然后switch在type将字典转换为适当的结构.那会有用吗?
我有一个用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) 我创建了一个简单的例子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) 我有一个简单的 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] …
我有以下代码,一切正常.
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) 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)
我想找到所有的孩子。我可以将递归 …
我有这样的事情:
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 …
我知道关于这个话题已经有很多问题,但我不能让我的例子有用.
请参阅plnkr.co#ua32dkF7fz6X2fA0ZAw3上的示例.
每个预告片都有一些额外的信息,当用户点击其中一个预告片时,这些信息会出现.但是,只要我点击其中一个预告片,其他信息就会出现在每个预告片下方.我想只在我点击的一个预告片下面显示它们.
我很确定这种情况正在发生,因为指令共享相同的父范围.如何将isActive变量保密为每个预告片?
假设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文件中是否可以有私有字段?
javascript ×4
go ×3
mongoose ×2
node.js ×2
angularjs ×1
boolean ×1
codable ×1
emscripten ×1
ios ×1
memory-leaks ×1
postgresql ×1
react-hooks ×1
reactjs ×1
recursion ×1
sql ×1
ssl ×1
struct ×1
swift ×1
tls1.2 ×1
typed-arrays ×1
webassembly ×1