我正在使用三层体系结构和express实现一个Web应用程序。我将blogposts作为存储在mysql数据库中的资源。这是表格的样子:
CREATE TABLE IF NOT EXISTS blogposts (
blogId INT NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
content VARCHAR(255) NOT NULL,
posted VARCHAR(255) NOT NULL,
imageFile VARCHAR(255) NOT NULL,
userId INT NOT NULL,
CONSTRAINT blog_id PRIMARY KEY (blogId),
CONSTRAINT id_fk FOREIGN KEY (userId) REFERENCES accounts(personId)
);
现在,我想检索一个博客文章ID,我将查询发送到数据访问层中的数据库,并像这样导出函数:
exports.getBlogpostId = function(blogId ,callback){
const query = "SELECT * FROM blogposts WHERE blogId = ?"
const value = [blogId]
db.query(query, value, function(error, blogpost){
if(error){
callback("DatabaseError", null)
}else{
callback(null, blogpost)
}
})
}
然后我在业务逻辑层中使用它:
exports.getBlogpostId = function(callback){
blogRepo.getBlogpostId(function(blogpost, error){
callback(error, blogpost)
})
}
然后最后我在表示层中使用它:
router.get("/:blogId", function(request, response){
const blogId = request.params.blogId
blogManager.getBlogpostId(blogId, function(error, blogpost){
const model = {
error: error,
blogpost: blogpost[0]
}
response.render("blogpost.hbs", model)
})
})
[当我尝试检索ID时,出现以下错误:
TypeError: val.slice is not a function
at escapeString (/web-app/node_modules/sqlstring/lib/SqlString.js:202:23)
at Object.escape (/web-app/node_modules/sqlstring/lib/SqlString.js:56:21)
at Object.format (/web-app/node_modules/sqlstring/lib/SqlString.js:100:19)
at Connection.format (/web-app/node_modules/mysql/lib/Connection.js:271:20)
at Connection.query (/web-app/node_modules/mysql/lib/Connection.js:189:22)
at Object.exports.getBlogpostId (/web-app/src/dal/blog-repository.js:19:8)
at Object.exports.getBlogpostId (/web-app/src/bll/blog-manager.js:12:14)
at /web-app/src/pl/routers/blogRouter/blogRouter.router.js:39:17
at Layer.handle [as handle_request] (/web-app/node_modules/express/lib/router/layer.js:95:5)
at next (/web-app/node_modules/express/lib/router/route.js:137:13)
我不在任何地方调用slice方法,所以我不知道为什么会发生此错误?
编辑:发现了问题,我忘了在业务逻辑层中添加blogId作为参数!
提前感谢!
查看错误,该错误来自模块sqlstring
,而最本地的错误来自/web-app/src/pl/routers/blogRouter/blogRouter.router.js:39:17
,因此您必须在这里查看它