我想对一个项目使用feathersJS。我浏览了文档,还尝试浏览了文档中提供的聊天应用程序,但是我仍然做得不好。
据我了解,他们为服务和数据库(例如为用户和消息)创建的每种功能,已经创建了两个使用Nedb数据库的服务。
我的问题是,是否应该为每个要实现的功能创建包含数据库的服务?其次,对于每个用羽毛创建的服务都存在app.js,因此我要编写的逻辑代码(而不是用羽毛创建的内容)需要写在app.js上还是需要自己创建另一个app.js?
如果您能向我建议一些使用feathersJS完成的项目,我也将不胜感激。
答案 0 :(得分:2)
您是否正在使用CLI创建应用程序和服务?也许会更容易。但是实际上没有必要为每个服务创建数据库,除非确实有必要使用多个数据库。
关于逻辑代码,这取决于。可以将其作为express middleware或在service hooks (for every service or for the application)中进行处理。第二种情况更多地是关于处理客户请求的前后。当然,操作本身可以是类,函数甚至是API调用。例如,您可以仅在执行'get'操作之前检查客户端在请求中发送的参数,然后将钩子添加到钩子之前的GET中。也有一个钩子来检查身份验证。
//in other some place
module.exports = (hook) => {
return hook.params.query.device_type === 'smartphone'
? console.log('is a smartphone request')
: console.log('is not a smartphone request');
}
//src/services/devices/devices.hooks.js
const { authenticate } = require('@feathersjs/authentication').hooks;
const myVerification = require('path/to/myverification');
const myVerification2 = require('path/to/myverification2');
module.exports = {
before: {
all: [ authenticate('jwt') ],
find: [],
get: [myVerification, myVerification2],
create: [],
update: [],
patch: [],
remove: []
},
after: {
all: [],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
},
error: {
all: [],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
}
};