0
一個model.js文件中包含該型號:查詢sequelizejs返回undefined
exports.Conversations = db.sequelize.define('conversations', {
room_id: {
type: db.Sequelize.STRING
},
user_id: {
type: db.Sequelize.STRING
},
friend_id: {
type: db.Sequelize.STRING
},
}, {
timestamps: true,
createdAt:'created_at',
updatedAt:'updated_at',
deletedAt:'deleted_at',
freezeTableName: true // Model tableName will be the same as the model name
});
在query.js我有以下功能:
exports.checkRoom = function(user_id,friend_id) {
models.Conversations.findOne({ where: { $or: [{user_id: user_id , friend_id: friend_id}, {user_id: friend_id , friend_id: user_id}] }}).then(function(conversation) {
return conversation;
});
}
等同於:
SELECT
"id", "room_id", "user_id", "friend_id", "created_at", "updated_at"
FROM
"conversations" AS "conversations"
WHERE
(("conversations"."user_id" = '127' AND "conversations"."friend_id" = '124')
OR ("conversations"."user_id" = '124' AND "conversations"."friend_id" = '127'))
LIMIT 1;
當我在我的cluster.js
var conversation = query.checkRoom(data.userId,data.friendId));
我得到的那個對話是未定義的。
找到了幾個解決方案來抓住對象Promise但沒有奏效。
期待您的回答。
編輯
沒做到這一點,但調用我想這個問題的答案添加到一個變種,所以我可以在以後用它查詢時。如果現在我正在做類似的變化
conversationId = query.checkRoom(data.userId, data.friendId).then(function(conversation) { return conversation.dataValues.id; })
我得到我的var對話Id是[object promise]。
我怎樣才能獲得和使用外的.then()函數的承諾?
謝謝你的答案。管理這樣做,但在調用查詢時,我想將該答案添加到var,以便稍後使用它。 如果現在我真的做這樣的事情 VAR的conversationId = query.checkRoom(data.userId,data.friendId)。然後(功能(通話){ 回報conversation.dataValues.id; }) 我得到的我的var conversationId是[object Promise] – Edu
@Edu即使這些回調被用作承諾解析處理程序,您也無法從異步回調中返回標量值。 – robertklep
在這種情況下,你會想到什麼樣的轉變? – Edu