我是初学者,我想创建一个类似于twitter的应用程序
我有3个域类,即用户,推文和关注者。
关注者域名是维护两个用户之间的链接以便彼此跟随。
当我对关注者执行save()时会抛出以下错误,我无法弄清楚我出错的地方:
对象' mail.Follower'中的字段错误在字段'关注者':被拒绝的值[null];代码[mail.Follower.follower.nullable.error.mail.Follower.follower,mail.Follower.follower.nullable.error.follower,mail.Follower.follower.nullable.error.mail.User,mail.Follower.follower。 nullable.error,follower.follower.nullable.error.mail.Follower.follower,follower.follower.nullable.error.follower,follower.follower.nullable.error.mail.User,follower.follower.nullable.error,邮件。 Follower.follower.nullable.mail.Follower.follower,mail.Follower.follower.nullable.follower,mail.Follower.follower.nullable.mail.User,mail.Follower.follower.nullable,follower.follower.nullable.mail。 Follower.follower,follower.follower.nullable.follower,follower.follower.nullable.mail.User,follower.follower.nullable,nullable.mail.Follower.follower,nullable.follower,nullable.mail.User,可为空]。参数[follower,class mail.Follower];默认消息[类[{1}]的属性[{0}]不能为空] 对象' mail.Follower'中的字段错误在字段'用户':被拒绝的值[null];代码[mail.Follower.user.nullable.error.mail.Follower.user,mail.Follower.user.nullable.error.user,mail.Follower.user.nullable.error.mail.User,mail.Follower.user。 nullable.error,follower.user.nullable.error.mail.Follower.user,follower.user.nullable.error.user,follower.user.nullable.error.mail.User,follower.user.nullable.error,邮件。 Follower.user.nullable.mail.Follower.user,mail.Follower.user.nullable.user,mail.Follower.user.nullable.mail.User,mail.Follower.user.nullable,follower.user.nullable.mail。 Follower.user,follower.user.nullable.user,follower.user.nullable.mail.User,follower.user.nullable,nullable.mail.Follower.user
这是我的代码
域名
package mail
class User {
String name
String email
String password
int age
static constraints = {
name blank:false
email blank:false
password blank:false
age blank:false
}
static hasMany=[tweets:Tweets,followers:Follower]
}
粉丝域名
package mail
class Follower {
User follower
static constraints = {
follower nullable:false
}
static belongsTo=[user:User]
}
这是追随者控制器
package mail
import grails.converters.JSON
class FollowerController {
static allowedMethods = [save: "POST", update:"POST", delete:"POST",authenticate:"POST"]
def responseBody =[:]
def index() {}
def list(){
render Follower.list(sort:"dateCreated",order:"desc") as JSON
}
def get(Long id)
{
def followerInstace=Follower.get(id)
render followerInstace as JSON
}
def save()
{
def followerInstace=new Follower(request.JSON)
def user=User.get(session.loggedInUser.id)
println user
if(followerInstace.save(flush:true))
{
user.addToUser(followerInstace.id)
responseBody.message="saved successfully"
responseBody.id=followerInstace.id
responseBody.code=200
render responseBody as JSON
return
}
println followerInstace.errors
responseBody.message="save not successfull"
responseBody.code=400
println responseBody
render responseBody as JSON
}
def show(Long id)
{
def followerInstance=Follower.get(id)
if(followerInstance)
{
responseBody.code=200
resoponseBody.mesage="file found"
responseBody.followerInstance=followerInstance
render responseBody as JSON
}
else
{
responseBody.code=404
responseBody.message="Not Found"
render responseBody as JSON
return
}
}
def delete(Long id)
{
def followerInstace= Follower.get(id)
followerInstace.delete()
responseBody.message = "successfully deleted"
render responseBody as JSON
}
def update(Long id,Long version)
{
def followerInstance = Follower.get(id)
followerInstance.properties = params
if(followerInstance.save(flush:true))
{
responseBody.message="successfully updated"
responseBody.code = 200
responseBody.id = followerInstance.id
}
else {
responseBody.code = 400
responseBody.message = 'Some error(s) exist'
}
render responseBody as JSON
}
}
答案 0 :(得分:0)
在控制器中试用此代码:
def followerInstace=new Follower(request.JSON)
def user=User.get(session.loggedInUser.id)
followerInstanse.follower = user
if(followerInstace.save(flush:true))
{...
此异常因为字段关注者为空而
答案 1 :(得分:0)
我用一种简单的方式想出来,我发送了一个id到save方法而不是整个对象,因为它是我要保存的两个用户之间的链接......
def save(Long id)
{
def followerInstace=new Follower(request.JSON)
def user=User.get(session.loggedInUser.id)
User use=User.get(id)
followerInstace.followers=use
followerInstace.user = User.get(session.loggedInUser.id)
if(followerInstace.save(flush:true))
{
responseBody.message="saved successfully"
responseBody.id=followerInstace.id
responseBody.code=200
render responseBody as JSON
return
}
println followerInstace.errors
responseBody.message="save not successfull"
responseBody.code=400
println responseBody
render responseBody as JSON
}
现在我将结果正确存储在db
中