我正在尝试在 Play 框架中使用 Scala/Slick 保存数据。我正在通过 json 发送请求,并尝试通过将其与如下模型匹配来验证所述请求:
request.body.asJson.map(_.validate[Foo] match {...}
Run Code Online (Sandbox Code Playgroud)
问题是:如何设置默认列值(为 false)?
这是我的进化文件:
CREATE TABLE Foo(
...
deleted BOOLEAN NOT NULL DEFAULT FALSE,
...
)
Run Code Online (Sandbox Code Playgroud)
这是我的模型(.scala):
case class Foo(
...
deleted: Boolean,
...)
Run Code Online (Sandbox Code Playgroud)
这是我的 dao (.scala):
class Foo(tag: Tag) extends TableFoo(tag, "Foo"){
...
def deleted = column[Boolean]("deleted", O.Default(false))
...
def * = (..., deleted, ...) <> ((Foo.apply _).tupled, Foo.unapply)
}
Run Code Online (Sandbox Code Playgroud)
验证模型请求时出现问题。定义deleted为时Option[Boolean],它None/Null为列写入deleted。将其定义为 时Boolean,验证失败。大概是因为请求缺少 属性deleted。
Option[Boolean]当验证失败或者只是写入的情况下,为什么要定义默认值None/Null?有没有一种简单的方法可以在 Scala/Slick …
我使用WordPress编辑器,并且想要在“ span”标签中显示一个图标,如下所示:
<div id="question1" class="box-around">
<div class="box-left"><span class="fa fa-search" aria-hidden="true"> </span></div>
<div class="box-right">
<h3>Some Heading</h3>
Some Text
<span id="question1-answer"> </span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
每当我在“视觉”中进行更改时,它都会删除“ span”标签,如下所示:
<div id="question1" class="box-around">
<div class="box-left"></div>
<div class="box-right">
<h3>Some Heading</h3>
Some Text
<span id="question1-answer"> </span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
奇怪的是,保留了底部的范围(id =“ question1-answer”)。我想念什么吗?我已经尝试在标记内设置空格“&nbsp”,在“ visual”中更改文本并使用不同的标记后,该空格将转换为“”(实际空白)。
谢谢!
我陷入了一个光滑的查询,但不幸的是找不到类似的例子。
配置:
scalaVersion := "2.11.7"
libraryDependencies += "com.typesafe.play" %% "play-slick" % "2.1.0"
Run Code Online (Sandbox Code Playgroud)
这是场景。我有一个称为的表/模型Record。对象本身拥有两个序列,即Tags和Markets。这是数据库结构的代表图像(我知道这不是ER图,也并非意味着):

Tags并Markets拥有自己的表格,并Record通过多对多关系进行连接 。目标是建立一个查询,以检索所有记录(无论标签和市场如何),具有市场的记录和具有标签的记录。我有这样的想法:
Future[Seq[(RecordModel, Option[Seq[MarketModel]], Option[Seq[TagModel]])]]
这就是我所拥有的:
def myFunction(): Future[Seq[(RecordModel, Seq[MarketModel], Seq[TagModel])]] = {
val query = for {
recs <- records joinLeft (recordsMarkets join markets on (_.marketId === _.marketId)) on (_.recordId === _._1.recordId) joinLeft (recordsTags join tags on (_.tagId === _.tagId)) on (_._1.recordId === _._1.recordId)
} yield recs
db.run(query.result).map(_.toList.groupBy(_._1).map {
case (r, m) => (
r._1, …Run Code Online (Sandbox Code Playgroud) 我正在与i18next进行反应https://github.com/i18next/react-i18next。我正在努力在JSON语言文件的字符串中换行。
这是我已经尝试过的方法,不会中断新行:
line: "This is a line. \n This is another line. \n Yet another line",

line: ("This is a line."+ <br/> + "This is another line. \n Yet another line"),

line: ('This is a line. <br/> This is another line. \n Yet another line'),

我显然尝试在每个句子后换行。这就是我所说的:
<TooltipLink onClick={() => {
this.toggleHelpTextDialog(t('test:test.line'));
}}/>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢!
我正在尝试向数组中的对象添加新属性。我的想法是做这样的事情:
class Foo extends Component {
constructor(props) {
super(props);
this.state = this.getInitialState();
console.log(this.state); //Property "label" is missing in "members" array
}
/**
* Get initial state
* @returns {{title, description}}
*/
getInitialState = () => {
let members = this.props.members.slice();
members.map((member) => {
return {
...member,
label: (member.firstName + " " + member.lastName)
}
});
console.log(members); //"label" is not a property of objects
return {title: "", description: "", responsible: [], typeOf: null,
members: members};
};
render () {
return (<div/>) …Run Code Online (Sandbox Code Playgroud) 我问自己是否有一种干净、正确的方法可以使用setState. 这就是我目前所做的:
export function moveStepUp(index) {
if(index > 0){
let currentStep = this.state.stepsData[index];
let stepAbove = this.state.stepsData[index - 1];
this.setState((prevState) => ({
stepsData: prevState.stepsData.map((step, i) => {
if(i === index - 1)
return {
...currentStep,
position: i
};
if(i === index)
return {
...stepAbove,
position: i
};
return step;
})
}), () => console.log(this.state.stepsData));
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码有效,但我认为可能有更好的解决方案。对于这样一个简单的任务来说,代码行数似乎太多了。谢谢!