我正在使用Golang Revel进行一些网络项目,到目前为止我确实喜欢了12个项目.在所有这些中,由于返回类型,我有很多代码冗余.看看这两个功能:
func (c Helper) Brands() []*models.Brand{
//do some select on rethinkdb and populate correct model
var brands []*models.Brand
rows.All(&brands)
return brands
}
func (c Helper) BlogPosts() []*models.Post{
//do some select on rethinkdb and populate correct model
var posts []*models.Post
rows.All(&posts)
return posts
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它们都返回相同类型的数据(类型结构).我的想法就是像这样传递字符串var:
func (c Helper) ReturnModels(modelName string) []*interface{} {
//do rethinkdb select with modelName and return []*interface{} for modelName
}
Run Code Online (Sandbox Code Playgroud)
像这样我可以只有一个帮助器来返回数据类型,而不是为不同的模型反复做同样的事情,但是相同的数据类型.
我的问题是:
我在从PostTag包含Post和Tag列的表中删除记录时遇到问题.这是我的关系表:
tags = db.Table('PostTag',
db.Column('Tag', db.Integer, db.ForeignKey('Tag.Id')),
db.Column('Post', db.Integer, db.ForeignKey('Post.Id'))
)
Run Code Online (Sandbox Code Playgroud)
和
tags = db.relationship(Tag, secondary=tags, backref=db.backref('Post', lazy='dynamic'))
Run Code Online (Sandbox Code Playgroud)
当我这样做:
from models.Post import Post
posts = Post.query.join(Post.tags).filter(Post.Id == id).all()
if(posts):
return posts
return False
Run Code Online (Sandbox Code Playgroud)
然后
for posttag in post[0].tags:
db.session.delete(posttag)
db.session.flush()
Run Code Online (Sandbox Code Playgroud)
删除多对多关系的行,但也删除Tag表中的记录.
我只需要从PostTag表中删除某些条件的记录(Post=1例如)
我搜索了互联网,但我没有找到任何结论.我不需要在多对多关系上级联.
这是sql日志:
297 Query DELETE FROM `PostTag` WHERE `PostTag`.`Tag` = 14 AND `PostTag`.`Post` = 3
297 Query DELETE FROM `PostTag` WHERE `PostTag`.`Tag` = 14 AND `PostTag`.`Post` …Run Code Online (Sandbox Code Playgroud) 我试图从symfony2中的事件监听器发送var来查看,但我已经堆叠了.
1)这可能吗?
2)使用什么内核事件(kernel.view或kernel.request)?
3)最后如何发送一些var来查看?
我最好的猜测是,我必须从控制器延长返回,然后让控制器完成他的工作.
我需要发送一些对象(实体).
我有 vujes 打字稿项目,在 vuex 商店我得到了类似的东西:
async getUserProfile ({ dispatch, commit }: any) {}
Run Code Online (Sandbox Code Playgroud)
好吧,我不想要,any因为那很糟糕,而且您在编辑器中没有帮助/自动完成功能。我找到了这个import { Dispatch, Commit } from "vuex";但是如何将该信息传递给{ dispatch, commit }: any
如何使用嵌套值来使用 case == 运算符?就像是:
this.map.setPaintProperty("somelayer", "fill-color",
["case",
["==", ["properties:some_prop"], someval],
"#34c0dd",
"#499bbc"]
Run Code Online (Sandbox Code Playgroud)
其中属性是字典:
properties = {
some_prop: 1,
some_prop2: 2,
// and so on
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过["properties.some_prop"],["properties"]["some_prop"]但效果并不好。
以及如何打印 mapbox 查询(例如 console.log 或其他内容)?
这是Playground链接https://play.golang.org/p/qMKxqrOcc2.问题类似于Playground上的问题.
假设我有条件,需要这样做:
if modelName == "a"{
model = models.A
}
else{
model = models.B
}
Run Code Online (Sandbox Code Playgroud)
在那里A和B一些型号:
type A struct{
filed1 string
field2 string
//etc
}
Run Code Online (Sandbox Code Playgroud)
和模型B是
type B struct{
filed1 string
field2 string
//etc
}
Run Code Online (Sandbox Code Playgroud)
字段在A和B有一些相同的字段,但大多数它们反映数据库表(文档),它们是相同的类型(类型结构).
当我在所有的面前说:
var model interface{}
Run Code Online (Sandbox Code Playgroud)
我收到了错误:
type models.A is not an expression
Run Code Online (Sandbox Code Playgroud)
如果你问为什么,我这样做是为了避免代码中的代码冗余.
问题类似于:如何在Golang中返回动态类型结构?
这是代码的更新:
b := c.mainHelper.GetModelBy("id", id, modelName).(map[string]interface{})
mapstructure.Decode(b, &model)
if modelName == "a"{
model.Photos = []string{"ph1","ph2"}
}
if modelName …Run Code Online (Sandbox Code Playgroud) 我在一台机器上执行了 kubeadm init 。我按照网络等上的所有说明进行操作,最终得到以下结果:
kubectl get nodes:
NAME STATUS ROLES AGE VERSION
slchvdvcybld001 Ready control-plane 140m v1.24.2
slchvdvcydtb001 Ready <none> 136m v1.24.2
slchvdvcytst001 Ready <none> 137m v1.24.2
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,没有节点是 Master 或 Worker 或类似的节点。
我没有任何特殊的设置,我所做的就是安装它并进行初始化。
日志文件中没有错误。仪表板是绿色的,所有东西都是绿色的。
这些是 kubectl 等的版本:
Client Version: v1.24.2
Kustomize Version: v4.5.4
Server Version: v1.24.2
Run Code Online (Sandbox Code Playgroud) go ×2
flowtype ×1
javascript ×1
kubernetes ×1
mapbox ×1
mapbox-gl ×1
mapbox-gl-js ×1
php ×1
python ×1
revel ×1
sqlalchemy ×1
symfony ×1
vue.js ×1
vuejs2 ×1
vuex ×1