简介:我从成员事务表中提取用户ID列表,然后用于从数据库生成用户列表.然后,这将用于生成发送到列出与帐户关联的用户的页面的JSON.
背景:在游戏中使用Squeryl的Scala代码!骨架
错误: value id is not a member of Option[models.User]
将用户映射到JSON生成器时
代码:这里的代码连续用于最终生成JSON
def memberIds(accountId: Long) = { from(DB.members)(m =>
where(m.accountId === accountId)
select (m)).map(_.userId).toSet
}
def membersToAccount(id: Long) = {
memberIds(id).map( i => models.User.get(i))
}
def listMembers(accountId: Long) = {
Json(generate(Account.membersToAccount(accountId)
.map(user => Map(
"id" -> user.id,
"name" -> user.name,
"username" -> user.username
))))
}
Run Code Online (Sandbox Code Playgroud)
困惑: User类包含一个id值,看起来case class User(
val id: Long, etc.
我很困惑为什么会产生这个错误.是语法问题还是我映射用户的问题?谢谢!
在旧戏!v1模板加载非常简单.但现在我无法弄清楚如何以与下面方法类似的方式使用Scala模板:
val template = TemplateLoader.load(templateName)
val body = template.render(templateBinding)
Run Code Online (Sandbox Code Playgroud)
上面的用例是渲染一个模板,用于Scala中的电子邮件.
新的Scala API有一个类似的类,用于处理模板http://www.playframework.org/documentation/api/2.0/scala/index.html#play.api.templates.Html但是如何加载模板?我应该咬紧牙关并导入Groovy模板吗?谢谢!
似乎有很多问题要求正则表达式来检测CSV文件类型,但是对于javascript都没有.
鉴于图像的正则表达式看起来像/^image\/(gif|jpeg|png)$/
,有人知道CSV的外观是什么样的吗?
编辑要更清楚一点,寻找正则表达式的"操作方法",检查文件是否为CSV以及相关的公共扩展名.谢谢!
创建了一个简单的Apache Commons Email对象并进行编译.已导入:import org.apache.commons.mail._
并且javax.mail.internet.MimeMessage
还执行了以下操作:
def sendVerification(user: User) = {
val email = new SimpleEmail()
email.setHostName("smtp.sendgrid.net")
email.setSmtpPort(465)
email.setAuthenticator(new DefaultAuthenticator("user", "pass"))
email.setSSLOnConnect(true)
email.setFrom("Community Admin <admin@domain.com>")
email.setSubject("TestMail")
email.setMsg("""Welcome %s!
Thanks for signing up. This email is to confirm your email address.
Cheers,
Admin Team
""" format user.firstName)
email.addTo(user.email)
email.send()
}
Run Code Online (Sandbox Code Playgroud)
错误如下:
[error] C:\Users\path\to\AccountService\models\User.scala:43: object mail is not a member of package javax
[error] import javax.mail.internet.MimeMessage
[error] ^
[error] error while loading Email, Missing dependency 'class javax.mail.internet.MimeMessage', required by C:\Users\path\lib\commons-email-1.2.jar(org/apache/commons/mail/Email.class) …
Run Code Online (Sandbox Code Playgroud) 我们的应用程序是基于Scala并基于Play构建!框架.我使用Scala Random生成了一个随机数.这是我们应用中每个帐户的唯一键.
但是,当我将新帐户保存到数据库中时,它会抛出java.lang.NumberFormatException
:
更多信息:我正在将一个帐户ID的字符串转换为Scala Long.我正在查找使用Squeryl对象,抓取ID,然后转换它.这是它的样子:
val account_id = Account.findAccountByUnique(account.uniqueKey).id.toLong
这就是findAccountByUnique的样子:
def findAccountByUnique(criteria: String) = {
from(DB.accounts)(a =>
where(a.uniqueKey == criteria)
select (a))
}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪错误:
java.lang.NumberFormatException: For input string: "468b68c"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at scala.collection.immutable.StringLike$class.toLong(StringLike.scala:209)
at scala.collection.immutable.StringOps.toLong(StringOps.scala:31)
at controllers.Accounts$.save(Accounts.scala:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:548)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:502)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:496)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:473)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)
at play.server.PlayHandler$NettyInvocation.execute(PlayHandler.java:257)
at play.Invoker$Invocation.run(Invoker.java:278)
at play.server.PlayHandler$NettyInvocation.run(PlayHandler.java:235)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown …
Run Code Online (Sandbox Code Playgroud) 我正在构建一个Web服务请求,将一些数据提交给我们使用的第三方服务:
val promise = WS.url("http://example.com/api/xxx/testers?api_key=%s" format(prefineryAPIKey)).post(requestBody)
val data = promise.value.get.body
Run Code Online (Sandbox Code Playgroud)
该变量requestBody
是XML内容,我需要发送此帖子"Content-Type: text/xml"
.如何在Web服务中设置它?它是否像Play!链接一样有效.as("text/xml")
?
谢谢
最终目标是连接两个传递给Play的查询参数!网络服务请求.看起来像:
WS
.url(requestUri)
.withQueryString(finalQueries)
Run Code Online (Sandbox Code Playgroud)
我试图使用几个运算符,但它失败了:
val finalQueries = queryParams match {
case Some(queries) =>
tokenParam ++ queries
case None =>
tokenParam
}
Run Code Online (Sandbox Code Playgroud)
错误: value ++ is not a member of (String, String)
API文档显示withQueryString
接受a(String, String)*
我对Play!的withQueryString
方法有点困惑,因为它似乎每次访问时都会完全替换整个查询字符串.任何方式来合理地组合查询字符串?
编辑:下面是一个示例查询字符串(类型语法及其最终外观有点令人困惑......):
val queryString = ("timeMin" -> "2012-08-20T01%3A11%3A06.000Z")
我在Spray.io中定义了以下路由.真正奇怪的是,每当我打电话时,/user/8dsdf974jj
它实际上都会运行以下三条路线.幽默地,我注意到了,因为我同时收到了20封发送给我的验证电子邮件.
pathPrefix("user") {
pathPrefix(PathElement) { id =>
path("") {
get { // code here }
} ~
path("verify" / "request") {
get { // code here }
} ~
path("verify" / "confirm") {
get { // code here }
}
}
}
Run Code Online (Sandbox Code Playgroud)
有人能解释为什么路径不会终止路由树吗?谢谢您的帮助.
使用Play!2.0.4和SecureSocial 2(http://securesocial.ws/).Scala实现.这个问题的大部分将直接引用这里的示例:https://github.com/jaliss/securesocial/blob/2.0.12/samples/scala/demo/app/service/InMemoryUserService.scala
我试图找出作者关于后端与存储服务交互的初衷.关于这些def find(id: UserId)
和def findByEmailAndProvider(email: String, providerId: String):
方法,SecureSocial是否希望提供可用于返回完整SocialUser
课程的Facebook ID或电子邮件?
如果是这种情况,那么我们如何为每个用户分配我们自己的ID,以便我们可以将帐户链接在一起?因为似乎如果我将Identity扩展为包含通用ID,那么这也需要重写/扩展社交提供者吗?
至少,我试图弄清楚我应该为后端服务中的方法find
和save
方法公开哪些API /参数.如果需要澄清这个问题请告诉我:)
运行Squeryl调用以获取从多个位置提取的某些数据,但由于某种原因,它会作为一个单元返回.如何让它作为Iterable返回?
下面是拉数据:
/**
* gets a stream for a particular user
*/
def getUserStream(userId:Long) {
User.teamIds(userId).toList.map( (team) =>
Stream.findByTeam(team,0,5).map( (stream) =>
List(stream)
).flatten
).flatten.sortBy(_.id)
}
Run Code Online (Sandbox Code Playgroud)
然后输出数据,其中结果返回为Unit
:
Stream.getUserStream(userId) match {
case results => {
Ok( generate(results.map( (stream) => Map(
"id" -> stream.id,
"model" -> stream.model,
"time" -> stream.time,
"content" -> stream.content
))
) ).as("application/json")
}
case _ => Ok("")
}
Run Code Online (Sandbox Code Playgroud)
我最初的猜测是一个函数可以作为None返回,但它不会只返回一个空列表吗?