无法创建LoopBack内置用户模型继承者,代码创建用户返回undefined
解决LoopBack继承User模型后创建实例返回undefined的问题
嘿,我看你遇到了继承LoopBack内置User模型后,代码里创建实例回调返回undefined,但Explorer却能正常工作的问题。咱们一步步排查解决:
1. 先别忽略错误信息!
你之前的代码里完全没打印err参数,这很关键——很多时候user是undefined,其实是因为创建过程中抛出了错误,只是你没看到而已。先把错误日志加上:
Participant.create({ email: `${body.login}@yandex.by`, password: '1111', }, function(err, user) { if (err) { console.error('创建用户出错:', err); // 一定要看这个! return; } console.log(user); });
如果有错误,比如模型配置问题、字段验证失败,这里会直接告诉你原因。
2. 换Promise写法试试回调的问题
有时候回调的异步处理容易出问题,换成LoopBack支持的Promise写法,说不定能拿到正确的实例:
try { const user = await Participant.create({ email: `${body.login}@yandex.by`, password: '1111', }); console.log(user); } catch (err) { console.error('创建失败:', err); }
(注意如果用await,要确保这段代码在async函数里)
3. 修复request.post的回调参数
你用的request库回调参数顺序不对!它的回调是(err, response, body),不是(err, user)。你现在打印的user其实是响应对象,真正的用户数据在body里,而且是字符串格式,需要解析:
request.post('http://localhost:3000/api/Participants', { form: { email: `${body.login}@yandex.by`, password: '1111', }, }, function(err, response, body) { if (err) { console.error('请求出错:', err); return; } // 解析JSON字符串拿到用户对象 const createdUser = JSON.parse(body); console.log(createdUser); });
4. 确认模型继承配置(虽然Explorer正常,但还是核对下)
确保你的Participant模型正确继承了User,比如在common/models/participant.json里:
{ "name": "Participant", "base": "User", "properties": {}, // 其他配置... }
同时检查model-config.json里有没有正确注册这个模型,确保它被加载了。
Explorer能正常工作,说明模型的路由和基础配置是没问题的,问题大概率出在代码的回调参数处理或者错误捕获上。先把错误日志加上,应该能快速定位到原因。
内容的提问来源于stack exchange,提问作者Lapkovsky Kirill
相关产品推荐
相关产品推荐

