有没有办法可以使用一个基类,它具有我的模型的所有公共属性和方法,但没有与数据库表链接,然后我可以在定义新模型时扩展这个基类.
在这里,我在node express中创建了基础,人员模型.我需要从基类扩展person类.
const person = sequelizeClient.define('person', {
name: {
type: DataTypes.STRING,
allowNull: false
}
}, {
hooks: {
beforeCount(options) {
options.raw = true;
}
}
});
const base = sequelizeClient.define('base', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
createdBy: {
type: Sequelize.INTEGER,
},
updatedBy: {
type: Sequelize.INTEGER,
},
deletedBy: {
type: Sequelize.INTEGER,
}
}, {
hooks: {
beforeCount(options) {
options.raw = true;
}
}
});
Run Code Online (Sandbox Code Playgroud)
在文档中说明了这一点
Sequelize Models是ES6类.您可以非常轻松地添加自定义实例或类级别方法.
我怎样才能使用ES6扩展类模式?
有一个类似的问题,但最近没有更新. 如何扩展Sequelize模型
我有一个运行Jest的FeathersJS api 项目进行测试。
\n我的测试套件工作正常。但是,它总是以以下警告消息结束:
\nJest has detected the following 2 open handles potentially keeping Jest from exiting:\n\n \xe2\x97\x8f RANDOMBYTESREQUEST\n\n at random (node_modules/bcryptjs/dist/bcrypt.js:70:56)\n at node_modules/bcryptjs/dist/bcrypt.js:84:9\n at node_modules/bcryptjs/dist/bcrypt.js:39:29\n at Object.<anonymous> (node_modules/bcryptjs/dist/bcrypt.js:43:2)\n\n\n \xe2\x97\x8f RANDOMBYTESREQUEST\n\n at Object.<anonymous>.module.exports (node_modules/nexmo/node_modules/uuid/rng.js:3:10)\n at Object.<anonymous> (node_modules/nexmo/node_modules/uuid/uuid.js:57:18)\n at Object.<anonymous> (node_modules/nexmo/src/JwtGenerator.js:1:1)\nRun Code Online (Sandbox Code Playgroud)\n此错误意味着什么以及如何修复它?
\n注意:我很乐意添加更多详细信息,例如代码示例,但我真的不知道从哪里开始。请随时提出更多评论,我将相应地更新帖子。
\n谢谢
\n我正在使用Typescript 2.3.4,Node.JS 8.0.0和Feathers框架(版本2.1.1).我正在制作一个使用服务的快速路线,当我在抓取羽毛应用上的单例实例后尝试使用该服务时,Typescript会抛出错误TS2532:对象可能是"未定义"错误,即使在显式类型保护之后.
routes.ts
import feathers = require('feathers');
export default function(this: feathers.Application) {
const app = this;
app.post(
'/donuts',
async (req, res) => {
const someService = app.service<any>('predefined-service');
if(typeof someService === "undefined" || !authService) {
res.redirect('/fail');
return;
}
try {
let data = someService.create({test: 'hello'});
console.log(data);
res.redirect('/success');
} catch(err) {
res.redirect('/fail');
}
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过写作,someService!.create...但这也不起作用.
感谢阅读,任何帮助赞赏<3 <3
我用下面的内容定义我的api:
class MyFeathersApi {
feathersClient: any;
accountsAPI: any;
productsAPI: any;
constructor(app) {
var port: number = app.get('port');
this.accountsAPI = app.service('/api/accounts');
this.productsAPI = app.service('/api/products');
}
findAdminAccounts(filter: any, cb: (err:Error, accounts:Models.IAccount[]) => void) {
filter = { query: { adminProfile: { $exists: true } } }
this.accountsAPI.find(filter, cb);
}
Run Code Online (Sandbox Code Playgroud)
当我想使用数据库适配器方法时,从客户端,即查找和/或创建,我执行以下操作:
var accountsAPIService = app.service('/api/accounts');
accountsAPIService.find( function(error, accounts) {
...
});
Run Code Online (Sandbox Code Playgroud)
我如何从客户端调用自定义方法,例如findAdminAccounts()?
这是我第一次尝试开玩笑。我正在尝试为我的服务运行“stock”测试,即,feathersjs 在通过 cli 创建服务时为您设置的测试。该服务使用带有回调的异步函数,作为最后一步,我在控制台中进行了一些日志记录。我收到错误:“测试完成后无法记录。您是否忘记在测试中等待某些异步内容?” 我怀疑测试在退出之前不会等待回调完成,因此当回调执行时会在测试完成后尝试记录。
这是库存测试:
it('registered the service', () => {
const service = app.service('order');
expect(service).toBeTruthy();
});
Run Code Online (Sandbox Code Playgroud)
我尝试了文档中提到的一些技术,例如 async/await:
it('registered the service', async () => {
const service = await app.service('order');
expect(service).toBeTruthy();
});
Run Code Online (Sandbox Code Playgroud)
我尝试使用“完成”:每次我都会收到相同的错误消息。
这是执行日志记录的服务代码部分:
amqp.connect(amqp_url, (err0, conn) => {
if(err0) {
throw(err0);
}
conn.createChannel((err1, ch) => {
if(err1) {
throw(err1);
}
ch.assertQueue(orchToOrderQName);
ch.consume(orchToOrderQName, function(msg) {
ch.ack(msg);
service.emit('create', msg);
});
orchToOrderChannel = ch;
});
conn.createChannel((err1, ch) => {
if(err1) {
throw(err1);
}
ch.assertQueue(orderToOrchQName);
orderToOrchChannel = ch;
console.log(" [*] Order …Run Code Online (Sandbox Code Playgroud) 我有一个现有的Firebase应用程序(它是为快速原型设计而构建的,现在变大了,我不打算移动,因为现有的依赖项,也因为易用性和身份验证捆绑)而我正在尝试构建一个Rest API使用FeatherJS.
如果您使用标准数据库(MongoDB等),使用FeathersJS似乎很容易.如何将Firebase与Feathers集成在一起,保持最佳实践(服务架构,AOP)?我可以覆盖Feathers中的服务并将其映射到我的Firebase Rest端点吗?
我在Feathers中创建了一个自定义服务并尝试这样做:
get(id, params) {
return Promise.resolve(FirebaseRef.child(id).once('value'));
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
Converting circular structure to JSON error
Run Code Online (Sandbox Code Playgroud)
我正在做的是正确的吗?
architecture node.js promise feathersjs firebase-realtime-database
我有通过sequelize使用mysql运行的feathers.js.这是有效的,我可以从表中收集数据.下一步是在模型中定义"连接".
我有一个表'status_id'和'country_id'的表.这些列引用元数据表中的id.在SQL中我会说:
SELECT status.description, country.description, detail
FROM details
INNER JOIN metadata status
ON (details.status_id = status.id AND status.type = 'status'
INNER JOIN metadata country
ON (details.country_id =country.id AND country.type = 'country')
Run Code Online (Sandbox Code Playgroud)
在这种情况下,此元数据表不会很大,因此这种方法.它确实提供了我需要的灵活性.
在feathters.js中我需要做什么?
我正在构建一个使用Feather和socketio 的服务器。
我正在尝试使用羽毛通道机制来通知相关用户(连接)相关事件。
用户属于组,因此在连接到服务器后,我将连接添加到适当的通道。
发布后,在 inside 中app.publish,我获得了正确的数据,并看到连接已附加到通道,但无法弄清楚如何在客户端上监听它。
这是一个简化的channels.js:
app.on('connection', async (connection) => {
connection.userGroups.forEach((group) => {
app.channel(`group.groupId`).join(connection);
}
app.channel('1').join(connection); // dummy channel
}
app.publish((data, context) => {
console.log(app.channel('1')); // output shown below
return app.channel('1');
});
Run Code Online (Sandbox Code Playgroud)
我使用 Postman 作为客户端,发送请求patch,并监听名为rooms patched(rooms 是我的服务名称)的事件,如Feathers 文档中所述。没有事件到达。
如果我使用原始的socketio实例并从那里发出,一切似乎都工作正常,并且我在客户端中收到事件
app.io.sockets.in('some room').emit('rooms patched', data);
Run Code Online (Sandbox Code Playgroud)
但据我了解,它凌驾于整个渠道机制之上。
通过检查 app.publish 的输出
Channel {
_events: [Object: null prototype] {
empty: [Function: bound onceWrapper] { listener: [Function …Run Code Online (Sandbox Code Playgroud) 最近我一直在学习 Feather JS。但是,我对 Express 和 Feather 之间的区别感到非常困惑。人们使用 Feather 的最重要原因之一是因为它能够提供实时 API。Express 不能也使用实时吗?Feather 与 Express 的其他区别是什么?
我从feathers 4.3 和Typescript 3.6 开始,有一个问题是如何为feathers 客户端(浏览器端)正确定义正确的Typescript 类型。
我从https://github.com/feathersjs-ecosystem/feathers-chat-react获取了 react 聊天代码,并将其翻译成 Typescript(大部分是直截了当的)。
在feathers.js 中有客户端的定义:
const client = feathers()
Run Code Online (Sandbox Code Playgroud)
的类型client推断为Application<any>。
当我尝试调用authenticate客户端 ( application.js) 时出现问题:
client.authenticate().catch(() => this.setState({ login: null }))
Run Code Online (Sandbox Code Playgroud)
打字稿告诉我 TS2339: Property 'authenticate' does not exist on type 'Application<any>'
如果我将类型转换为 any,,但我宁愿避免这种情况。
我猜解决方案是将它实例化
const client = feathers<MyApplicationType>()
而不是根本不传递类型参数?
Typescript 类型应该是什么样子或应该如何构造的地方是否有文档?它是客户端上可用的不同服务类型的联合吗?
谢谢你的帮助!
feathersjs ×10
node.js ×5
javascript ×4
express ×3
jestjs ×2
sequelize.js ×2
typescript ×2
architecture ×1
ecmascript-6 ×1
mysql ×1
postman ×1
promise ×1
socket.io ×1